Skip to main content
A- A+

Python: entendendo *args e **kwargs

No post de hoje, discutiremos um tópico relativamente avançado em Python: o uso de *args e **kwargs na assinatura de funções.

Essencialmente, ambos os termos permitem o uso variável de argumentos em funções.

 

Todavia, enquanto *args permite o uso de argumentos puramente posicionais (argumentos sem nome, um vetor de argumentos), **kwargs permite acrescentar argumentos nomeados em função (um dicionário de argumentos).

 

*args e **kwargs em Python

O uso de **kwargs se faz útil quando utilizamos argumentos nomeados. Assim, **kwargs faz um dicionário cujo conteúdo podemos acessar através do nome do argumento.

 

*args e **kwargs em Python

 

Necessidade e vantagens em usar *args e **kwargs

Ok, o conceito de *args e **kwargs parece relativamente simples! O que mais confunde os programadores, sobretudo principiantes, é qual a necessidade do recurso e qual a sua vantagem sobre exigir o argumento diretamente na assinatura da função.

Um dos melhores casos de uso é quando utilizamos composição de funções sobre um argumento, isto é, aplicamos uma série de funções ao argumento de entrada, no caso em que as funções intermediárias possuem argumentos diferentes. Veja o exemplo:

 

*args e **kwargs em Python

Aqui, a função de composição aplica à entrada (2, no exemplo) uma soma seguida de uma multiplicação. Embora as funções internas tenham argumentos diferentes, o programa funciona perfeitamente graças ao uso dos argumentos *args e **kwargs.

Além disso, não precisamos voltar atrás e mudar a assinatura da função composição para acrescentar uma nova função (o que não apenas se torna perigoso do ponto de vista de manutenção e retrocompatibilidade, como também possivelmente deixaria a função com uma lista enorme de argumentos, dependendo das necessidades futuras).

 

*args e **kwargs em Python (com caso de uso e código)

Note que temos uma desvantagem no uso dos argumentos variáveis: não é possível distinguir quais argumentos devem estar presentes ao chamar a função composição. Por isso, recomenda-se precaução no uso do recurso.

É isso, pessoal! Neste post, aprendemos um pouco sobre esses dois termos em Python, e espero ter ajudado vocês na compreensão

Observação: Os nomes *args e **kwargs são uma convenção. Na verdade, podemos substituir as palavras args e kwargs, sem comprometer o funcionamento do recurso.

 

 


Este artigo foi originalmente publicado no Medium de Dalisson Figueiredo, republicado com autorização do autor. 

Dalisson é Data Science Consultant aqui na Minds Digial. Conheça nossas vagas! 

oportunidades de emprego na minds

 

A seguir, você vai aprender sobre:

Close Menu