























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Funçoes em python
Tipologia: Notas de estudo
1 / 31
Esta página não é visível na pré-visualização
Não perca as partes importantes!
























Uma função pode ter 0, 1 ou mais argumentos
def f(): print a a = 1 f()
1
def f(): a = 5 f() print a 1 def f(): global a
a = 5
f() print a 5
def f(nome,saudacao="Oi",pontuacao="!!"): return saudacao+","+nome+pontuacao print f(saudacao="Valeu",nome="Joao") Valeu,Joao!!
def f(x): x = 5 a = 1 f (a) print a
def f(): global a a = 5 >>> f() >>> print a 5 ## Exemplo ### >>> def f(x): ### return x*x ### >>> print f(10) ### >>> print x ### NameError: name 'x' is not defined ### >>> print f() ### TypeError: f() takes exactly 1 argument ( ### given) ## Argumentos default ## É possível dar valores default a argumentos ### Se o chamador não especificar valores para esses ### argumentos, os defaults são usados ## Formato: ### def nome ( arg1 =default1, ..., argN = defaultN ) ## Se apenas alguns argumentos têm default, esses devem ## ser os últimos ### Se não fosse assim, haveria ambigüidade na passagem de ### argumentos ## Passando argumentos com nomes ## É possível passar os argumentos sem empregar a ordem ## de definição desde que se nomeie cada valor passado ## com o nome do argumento correspondente ## Ex.: >>> def f(nome,saudacao="Oi",pontuacao="!!"): return saudacao+","+nome+pontuacao >>> print f(saudacao="Valeu",nome="Joao") Valeu,Joao!! ## Alterando parâmetros ## É possível alterar parâmetros? ### Sim e não ### Como o parâmetro é uma variável local, ele pode ser ### alterado sem problemas ### Entretanto, se um parâmetro recebe um valor que vem de ### uma variável global, esta não é alterada ## Ex.: >>> def f(x): x = 5 >>> a = 1 >>> f (a) >>> print a 1
x[:] = [5]
Ao invés de usar comentários para descrever o que uma função, é mais vantajoso usar docstrings Uma constante string escrita logo após o cabeçalho da função (comando def) Permite o acesso à documentação a partir do interpretador, usando a notação função. doc
def fat(n): ... "Retorna o fatorial de n."
... for i in range(n-1,1,-1): n*=i ... return n ...
fat(4) 24 print fat.doc Retorna o fatorial de n.
def f(a,b,**c): print a, b, c f(1,2,3) ... TypeError: f() takes exactly 2 arguments (3 given) f(1,2,x=3) 1 2 {'x': 3}
É possível passar os valores de uma tupla para preencher parâmetros posicionais de uma função bastando para isso precedê-la de * Um dicionário podem ser usado para preencher parâmetros por chave bastando para isso precedê-lo de ** É preciso tomar cuidado para não abusar! Ex.:
def f(a,b,c,d): a = 1 >>> f (a) >>> print a 1 ## Exemplo ### >>> def f(x): x[:] = [5] ### >>> a = [1] ### >>> f(a) ### >>> a ### [5] ### >>> b = a ### >>> b[:] = [7] ### >>> a ### [7] ## Documentando Funções Ao invés de usar comentários para descrever o que uma função, é mais vantajoso usar docstrings Uma constante string escrita logo após o cabeçalho da função (comando def) Permite o acesso à documentação a partir do interpretador, usando a notação função. doc >>> def fat(n): ... "Retorna o fatorial de n." ... for i in range(n-1,1,-1): n=i ... return n ... >>> fat(4) 24 >>> print fat.doc Retorna o fatorial de n. ## Lista de parâmetros variável (2) ## Se o último argumento de uma definição de função ## começa com ** , os todos os valores passados usando ## chaves a partir daquele são postos num dicionário ## Ex.: >>> def f(a,b,c): print a, b, c >>> f(1,2,3) ... TypeError: f() takes exactly 2 arguments (3 given) >>> f(1,2,x=3) 1 2 {'x': 3} ## Lista de parâmetros variável (3) É possível passar os valores de uma tupla para preencher parâmetros posicionais de uma função bastando para isso precedê-la de * Um dicionário podem ser usado para preencher parâmetros por chave bastando para isso precedê-lo de ** É preciso tomar cuidado para não abusar! Ex.: >>> def f(a,b,c,d): print a,b,c,d f([1,2,3,4,5]) 1 2 (3, 4, 5) {} f({"a":1,"b":2,"c":3,"d":4}) 1 2 () {'c': 3, 'd': 4} f(1,2,3,{"d":1})
b = a ### >>> b[:] = [7] ### >>> a ### [7] ## Documentando Funções Ao invés de usar comentários para descrever o que uma função, é mais vantajoso usar docstrings Uma constante string escrita logo após o cabeçalho da função (comando def) Permite o acesso à documentação a partir do interpretador, usando a notação função. doc >>> def fat(n): ... "Retorna o fatorial de n." ... for i in range(n-1,1,-1): n=i ... return n ... >>> fat(4) 24 >>> print fat.doc Retorna o fatorial de n. ## Lista de parâmetros variável (2) ## Se o último argumento de uma definição de função ## começa com ** , os todos os valores passados usando ## chaves a partir daquele são postos num dicionário ## Ex.: >>> def f(a,b,c): print a, b, c >>> f(1,2,3) ... TypeError: f() takes exactly 2 arguments (3 given) >>> f(1,2,x=3) 1 2 {'x': 3} ## Lista de parâmetros variável (3) É possível passar os valores de uma tupla para preencher parâmetros posicionais de uma função bastando para isso precedê-la de * Um dicionário podem ser usado para preencher parâmetros por chave bastando para isso precedê-lo de ** É preciso tomar cuidado para não abusar! Ex.: >>> def f(a,b,c,d): print a,b,c,d >>> f([1,2,3,4,5]) 1 2 (3, 4, 5) {} >>> f({"a":1,"b":2,"c":3,"d":4}) 1 2 () {'c': 3, 'd': 4} >>> f(1,2,3,{"d":1}) 1 2 (3,) {'d': 1} f(1,2,3,*{"a":1}) ... TypeError: f() got multiple values for keyword argument 'a'