Existem três tipos de argumentos que uma função Python pode aceitar: padrão, variável (*args) e palavra-chave (**kwargs). Os argumentos padrão são os mais simples, mas têm funcionalidade limitada. Por outro lado, *args e **kwargs permitem que você torne suas funções mais flexíveis, aceitando um número variável de entradas.

O tipo de passagem de argumento que você escolhe depende da natureza da sua função e do seu estilo de programação preferido.

Funções básicas em Python

Para entender como os dois argumentos variáveis ​​em funções Python funcionam, é essencial entender por que eles existem em primeiro lugar. Uma função simples declara um número fixo de argumentos anônimos assim:

defaddnum(a, b, c):
Retorna a + b + c

Esta função funciona bem, mas há espaço para melhorias. O maior problema é que ele só lida com dois argumentos, então só pode somar dois números. E se você quiser adicionar dois ou quatro números? Esta função não permitirá que você faça isso. Passar mais ou menos argumentos do que a função aceita levará a um TypeError.

instagram viewer

Claro, você pode criar mais funções para aceitar diferentes números de argumentos. Mas isso é inconveniente e não vai escalar bem. Você também precisará criar uma nova função toda vez que quiser manipular um novo número de entradas.

É aí que entram os argumentos de variáveis ​​e de palavras-chave. Usando *args e **kwargs, você pode definir funções flexíveis que podem receber um número variável de entradas.

O que é *args em Python?

A ideia principal por trás de *args em Python é permitir que você passe um número variável de entradas para sua função. Isso é útil em várias aplicações. Por exemplo, pense em um programa de calculadora em que você deseja dar ao usuário a capacidade de adicionar dois ou mais números e retornar a soma.

Observe que args é apenas um nome de variável; é o * que é importante. Você pode usar qualquer nome válido para seu argumento de variável, desde que inclua o *.

Como usar *args

Você pode modificar a função addnum para receber um número variável de entradas da seguinte forma:

defaddnum(*args):
total = 0

por número dentro argumentos:
total = total + numero

Retorna total

O trecho de código acima usa um loop for para iterar através das entradas fornecidas.

Você pode então chamar a função addnum com argumentos variáveis ​​e ela funcionará sem gerar um erro:

imprimir(addnum(10, 1, 12, 12, 4, 54, 5)) ## retorna 98
imprimir(addnum(14, 54, 5)) # retorna 73
imprimir(addnum(10, 5)) # retorna 15

O que é **kwargs em Python?

Enquanto *args e **kwargs nos permitem passar um número variável de entradas para funções, o último é específico para argumentos de palavras-chave. Caso você não saiba, os argumentos de palavras-chave são apenas nomes sofisticados para argumentos com um nome.

Outra coisa única sobre **kwargs é que Python representa o valor como um dicionário.

Como usar **kwargs

Assim como *args, o asterisco duplo é a parte importante; você pode usar qualquer palavra como um nome de parâmetro. Aqui está um exemplo de como usar **kwargs em Python:

defcomparecimento semanal(**dias da semana):
total_attendees = 0

porparticipantesdentrodias da semana.valores():
total_attendees = total_attendees + participantes

Retorna total_attendees

imprimir(weekly_attendance (segunda-feira = 265, terça-feira = 698, quarta-feira = 365, quinta-feira = 463, sexta-feira = 234)) # retorna 2025
imprimir(weekly_attendance (segunda-feira = 265, sexta-feira = 234)) # retorna 499
imprimir(weekly_attendance (quarta-feira = 365, quinta-feira = 463, sexta-feira = 234)) # retorna 1062

O trecho de código acima também usa um loop for, mas desta vez com o método values() embutido do Python. Esse método retorna um objeto de visualização de todos os valores do dicionário. O método values() permite que você percorrer um dicionário Python sem aborrecimentos.

Use argumentos variáveis ​​para tornar suas funções Python flexíveis

Os argumentos de função são úteis, mas algumas funções podem se beneficiar ao aceitar um número variável de argumentos. Argumentos de palavras-chave nomeadas podem tornar seu código mais legível e fácil de usar. Você deve adotar os argumentos *args e **kwargs do Python. Eles são bem simples de usar e, com eles, você pode tornar suas funções e programas mais flexíveis.

Seguindo as etapas e os snippets de código acima, esperamos que agora você possa usar argumentos variáveis ​​de palavras-chave e não palavras-chave para suas funções.