Resumo: neste tutorial, você aprenderá sobre os parâmetro **kwargs
do Python.
Introdução aos parâmetros Python **kwargs
Em Python, uma função pode ter um parâmetro precedido por duas estrelas (**). Por exemplo **kwwargs
:
**kwargs
é chamado de parâmetro de palavra-chave.
Quando uma função tem o parâmetro **kwargs
, ela pode aceitar um número variável de argumentos de palavra-chave como um dicionário.
As duas estrelas (**
) são importantes. No entanto, o nome kwargs
é por convenção. Portanto, você pode usar qualquer outro nome significativo, como **configs
ou **files
.
O exemplo a seguir define uma função chamada connect()
que aceita um parâmetro **kwargs
:
def connect(**kwargs):
print(type(kwargs))
print(kwargs)
A seguinte chamada de função mostra um dicionário vazio na tela:
connect()
Saída:
<class 'dict'>
{}
Neste exemplo, não passamos nenhum argumento para a função connect()
, o dicionário kwargs
está vazio.
O seguinte chama a função connect()
e passa alguns argumentos de palavra-chave para ela:
connect(server='localhost', port=3306, user='root', password='Py1hon!Xt')
Mostra o seguinte dicionário na tela:
<class 'dict'>
{'server': 'localhost', 'port': 3306, 'user': 'root', 'password': 'Py1hon!Xt'}
Dentro da função connect()
, você pode usar o argumento kwargs
como um dicionário.
Se você quiser passar um dicionário para a função, você precisa adicionar duas estrelas (**
) ao argumento assim:
def connect(**kwargs):
print(kwargs)
config = {'server': 'localhost',
'port': 3306,
'user': 'root',
'password': 'Py1thon!Xt12'}
connect(**config)
Se uma função tiver o parâmetro **kwargs
e outros parâmetros, você precisará colocar o **kwargs
depois de outros parâmetros. Caso contrário, você obterá um erro.
A sintaxe da seguinte função connect()
está correta:
def connect(fn, **kwargs):
print(kwargs)
No entanto, a sintaxe desta função causa um SyntaxError:
def connect(**kwargs, fn):
print(kwargs)
Usando argumentos *args e **kwargs
A função a seguir tem os parâmetros *args e **kwargs:
def fn(*args, **kwargs):
print(args)
print(kwargs)
A função fn
pode aceitar um número variável de argumentos posicionais. O Python irá empacotá-los como uma tupla e atribuir a tupla ao argumento args
.
A função fn
também aceita um número variável de argumentos de palavra-chave. O Python irá empacotá-los como um dicionário e atribuir o dicionário ao argumento kwargs
.
Por exemplo:
fn(1, 2, x=10, y=20)
Saída:
(1, 2)
{'x': 10, 'y': 20}
Resumo
- Use o parâmetro Python
**kwargs
para permitir que a função aceite um número variável de argumentos de palavra-chave. - Dentro da função, o argumento
kwargs
é um dicionário que contém todos os argumentos de palavra-chave como seus pares nome-valor. - Anteceda asteriscos duplos (
**
) a um argumento de dicionário para passá-lo ao parâmetro**kwargs
. - Sempre coloque o parâmetro
**kwargs
no final da lista de parâmetros ou ocorrerá um erro.