Parâmetros Python **kwargs

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.

Deixe um comentário

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