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).
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.
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:
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).
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.
- Leia também: Análise de dados em Tableau Desktop
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!
A seguir, você vai aprender sobre: