Antes de prosseguir leia os artigos anteriores aqui.
No último post eu mostrei o básico de uma função com argumentos. Só que em Python há algumas funcionalidades a mais nos argumentos.
Funções e Argumentos Nomeados
Como já apresentei, Python utiliza palavras para designar os argumentos. Essas palavras não são utilizadas somente dentro do escopo da função, elas podem ser utilizadas também para a identificar um argumento. Vamos tomar como exemplo a função abaixo:
Conforme exemplo acima, ao repassar os argumentos 2, 1 e 3 eles são vinculados às variáveis num1, num2 e num3 respectivamente. Até aqui nada de novo, mas vamos ver agora uma possibilidade que o Python nos fornece:Código PHP:
>>> def mostra_numeros(num1, num2, num3):
... print 'Numero 1:',num1
... print 'Numero 2:',num2
... print 'Numero 3:',num3
...
>>> mostra_numeros(2, 1, 3)
Numero 1: 2
Numero 2: 1
Numero 3: 3
>>> mostra_numeros(7,07, 8)
Numero 1: 7
Numero 2: 0
Numero 3: 8
Desta forma eu posso passar os argumentos desordenadamente para o Python. Eu tenho a liberdade de escolher quem será o num1, o num2 ou o num3. Para usar isso devemos apenas nos atentar para certos detalhes:Código PHP:
>>> def mostra_numeros(num1, num2, num3):
... print 'Numero 1:',num1
... print 'Numero 2:',num2
... print 'Numero 3:',num3
...
>>> mostra_numeros(num2=2, num1=1, num3=3)
Numero 1: 1
Numero 2: 2
Numero 3: 3
>>> mostra_numeros(num2=7, num1=0, num3=8)
Numero 1: 0
Numero 2: 7
Numero 3: 8
1. um argumento não nomeado não deve suceder um argumento nomeado:
2. Quando não nomeamos alguns argumentos eles atomaticamente são atribuídos às sequências da função:Código PHP:
>>> mostra_numeros(num2=7, num1=0, 8)
File "<stdin>", line 1
SyntaxError: non-keyword arg after keyword arg
Nesse último exemplo o Python entende que 7 é o num1, e logo em seguida eu tento vincular o num1 ao numero 0, ocorrendo o erro de que o num1 foi utilizado multiplas vezes.Código PHP:
>>> mostra_numeros(7, num1=0, num3=8)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: mostra_numeros() got multiple values for keyword argument 'num1'
Desta forma, ao misturar argumentos nomeados e não nomeados devemos tomar cuidado para que os nomeados sejam os últimos e não devem vincular a argumentos que não foram nomeados.
Como esse assunto não traz nenhum novo conceito, não deixarei exercícios. Vamos guardar exercício para o próximo assunto: Argumentos com valores padrões.
Até mais...
[Curso de Python] Funções e Argumentos Nomeados
24 de Junho de 2010, 0:00 - sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 174 vezes
0sem comentários ainda