Argumentos de funções¶
Objetivo é mostrar a utilização de um número não fixo de argumentos. O argumento ‘numeros’ é uma tupla que recebe do terceiro argumento em diante.
O desempacotamento de tuplas/listas como argumentos também é possível e durante a expansão os dois primeiros argumentos serão colocados em ‘a’ e ‘b’ e o resto em ‘numeros’.
Exemplo
Função que soma dois ou mais números.
def soma(a, b, *numeros):
soma = a + b
for num in numeros:
soma += num
return soma
Exemplos de utilização:
>>> soma(1, 2)
3
>>> soma(1, 2, 3)
6
>>> soma(1, 2, 3, 4)
10
>>> numeros = [3, 4, 5]
>>> soma(1, 2, *numeros)
15
>>> numeros = [1, 2, 3, 4, 5, 6]
>>> soma(*numeros)
21
Demonstra a utilização de argumentos posicionais e nomeados, bem como o desempacotamento de tuplas/listas e dicionários.
Exemplo
Função que imprime os diferentes argumentos e seus tipos.
def foo(a, b, c, *args, **kwargs):
print('a: {} {}'.format(a, type(a)))
print('b: {} {}'.format(b, type(b)))
print('c: {} {}'.format(c, type(c)))
print('args: {} {}'.format(args, type(args)))
print('kwargs: {} {}'.format(kwargs, type(kwargs)))
Exemplos de utilização:
>>> foo(1, 2, 3, 4, 5, nome='Jose', idade=100, vivo=True)
a: 1 <class 'int'>
b: 2 <class 'int'>
c: 3 <class 'int'>
args: (4, 5) <class 'tuple'>
kwargs: {'nome': 'Jose', 'idade': 100, 'vivo': True} <class 'dict'>
>>> my_tuple = (2, 3)
>>> my_dict = {'idade': 100, 'vivo': True}
>>> foo(1, 4, 5, *my_tuple, nome='Jose', **my_dict)
a: 1 <class 'int'>
b: 4 <class 'int'>
c: 5 <class 'int'>
args: (2, 3) <class 'tuple'>
kwargs: {'nome': 'Jose', 'idade': 100, 'vivo': True} <class 'dict'>