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](https://minds.digital/wp-content/uploads/2021/08/Caso-de-uso-do-codigo-Python-1-1.png)
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](https://minds.digital/wp-content/uploads/2021/08/Caso-de-uso-do-codigo-Python-2-1.png)
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](https://minds.digital/wp-content/uploads/2021/08/Caso-de-uso-do-codigo-Python-3-1.png)
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)](https://minds.digital/wp-content/uploads/2021/08/Caso-de-uso-do-codigo-Python-4-1.png)
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!
![oportunidades de emprego na minds](https://minds.digital/wp-content/uploads/2021/08/args-e-kwargs-1.png)
A seguir, você vai aprender sobre: