Resumo : neste tutorial, você aprenderá sobre os **kwargs
parâmetros do Python.
Introdução aos parâmetros **kwargs do Python
Em Python, uma função pode ter um parâmetro precedido por dois asteriscos (**). Por exemplo:**kwwargs
O **kwargs
é chamado de parâmetro de palavra-chave.
Quando uma função possui o **kwargs
parâmetro, ela pode aceitar um número variável de argumentos de palavras-chave como um dicionário .
As duas estrelas ( **
) são importantes. No entanto, o nome kwargs
é por convenção. Portanto, você pode usar quaisquer outros nomes significativos, como **configs
e **files
.
O exemplo a seguir define uma função chamada connect()
que aceita um **kwargs
parâmetro:
def connect(**kwargs):
print(type(kwargs))
print(kwargs)
Linguagem de código: Python ( python )
A seguinte chamada de função mostra um dicionário vazio na tela:
connect()
Linguagem de código: Python ( python )
Saída:
<class 'dict'>
{}
Linguagem de código: Python ( python )
Neste exemplo, não passamos nenhum argumento para a connect()
função, o kwargs
dicionário está vazio.
O seguinte chama a connect()
função e passa alguns argumentos de palavras-chave para ela:
connect(server='localhost', port=3306, user='root', password='Py1hon!Xt')
Linguagem de código: Python ( python )
Ele mostra o seguinte dicionário na tela:
<class 'dict'>
{'server': 'localhost', 'port': 3306, 'user': 'root', 'password': 'Py1hon!Xt'}
Linguagem de código: Python ( python )
Dentro da connect()
função, você pode usar o kwargs
argumento 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)
Linguagem de código: Python ( python )
Se uma função tiver o **kwargs
parâmetro e outros parâmetros, você precisará colocá-los **kwargs
depois dos outros parâmetros. Caso contrário, você receberá um erro.
A sintaxe da seguinte connect()
função está correta:
def connect(fn, **kwargs):
print(kwargs)
Linguagem de código: Python ( python )
No entanto, a sintaxe desta função causa um SyntaxError:
def connect(**kwargs, fn):
print(kwargs)
Linguagem de código: Python ( python )
Usando argumentos *args e **kwargs
A função a seguir possui parâmetros *args e **kwargs:
def fn(*args, **kwargs):
print(args)
print(kwargs)
Linguagem de código: PHP ( php )
A fn
função pode aceitar um número variável de argumentos posicionais. Python irá empacotá-los como uma tupla e atribuir a tupla ao args
argumento.
A fn
função também aceita um número variável de argumentos de palavras-chave. Python irá empacotá-los como um dicionário e atribuir o dicionário ao kwargs
argumento.
Por exemplo:
fn(1, 2, x=10, y=20)
Saída:
(1, 2)
{'x': 10, 'y': 20}
Linguagem de código: JavaScript ( javascript )
Resumo
- Use o parâmetro Python
**kwargs
para permitir que a função aceite um número variável de argumentos de palavras-chave. - Dentro da função, o
kwargs
argumento é um dicionário que contém todos os argumentos de palavras-chave como seus pares nome-valor. - Preceda asteriscos duplos (
**
) a um argumento de dicionário para passá-lo ao**kwargs
parâmetro. - Sempre coloque o
**kwargs
parâmetro no final da lista de parâmetros ou você receberá um erro.