Bem, tecnicamente é *qualquer **qualquer coisa, mas a convenção é *args e **kwargs.
Python *args
*args e **kwargs geralmente são usados em definições de funções. Ambos permitem que você passe uma variável (ou digamos, um número que você não pode planejar) número de argumentos para uma função.
*args é usado para enviar uma lista de argumentos de comprimento variável sem palavras-chave para a função.
def teste_args(p_arg, *args):
print("primeiro argumento normal:", p_arg)
for arg in args:
print("outro arg através de *args :", arg)
teste_args('Joao','Futi','Usando','Python')
Saída —--------------------
primeiro argumento normal: Joao
outro arg através de *args : Futi
outro arg através de *args : Usando
outro arg através de *args : Python
Python **kwargs
Então, vimos como *args é usado para passar uma lista de argumentos de comprimento variável sem palavras-chave. **kwargs faz isso, mas para argumentos nomeados/com palavras-chave!
def teste(**kwargs):
if kwargs is not None:
for key, value in kwargs.items():
print("%s diz %s" % (key, value))
teste(Python="Bom dia", Joao="oi")
Saída —--------------------
Python diz Bom dia
Joao diz oi
Passando argumentos e kwargs em funções Python
Digamos que você queira escrever uma lista e queira passar os elementos da lista para a função.
def funcao_teste(p1, p2, p3):
print(p1,p2,p3)
return
ENTÃO COMO VOCÊ FAZ ISSO?
def funcao_teste(p1, p2, p3):
print(p1,p2,p3)
return
argumentos = (1,2,3)
funcao_teste(*argumentos)
Saída —--------------------
1 2 3
Você pode fazer a mesma coisa com kwargs também
def funcao_teste(p1, p2, p3):
print(p1,p2,p3)
return
kwargs = {"p1": 1, "p2": 2, "p3": 3}
funcao_teste(*kwargs)
Saída —--------------------
p1 p2 p3
Observe que escrever "p4": 4 lançará uma exceção, pois p4 não foi definido no protótipo da função
Iterando sobre argumentos passados por args em Python
# Se a função está definida
def nome_da_funcao(*args):
# Então
argumentos = argumentos
# Terá os argumentos retornando uma tupla de argumentos
# Se a função está definida
def nome_da_funcao(**kwargs):
# Então
argumentos = kwargs
# Terá argumentos para retornar um dicionário de argumentos
# Você pode usá-los para iterar usando loops for
Args, Kwarg, ordenação de argumentos formais
# A ordenação é feita desta forma
nome_da_funcao(argumentos, *args, **kwargs)
0 Comentários