Python **kwargs

Resumo : neste tutorial, você aprenderá sobre os **kwargsparâ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 **kwargsparâ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 **configse **files.

O exemplo a seguir define uma função chamada connect()que aceita um **kwargsparâ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 kwargsdicioná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 kwargsargumento 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 **kwargsparâmetro e outros parâmetros, você precisará colocá-los **kwargsdepois 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 fnfunção pode aceitar um número variável de argumentos posicionais. Python irá empacotá-los como uma tupla e atribuir a tupla ao argsargumento.

A fnfunçã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 kwargsargumento.

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 **kwargspara permitir que a função aceite um número variável de argumentos de palavras-chave.
  • Dentro da função, o kwargsargumento é 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 **kwargsparâmetro.
  • Sempre coloque o **kwargsparâmetro no final da lista de parâmetros ou você receberá um erro.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *