Como usar argumentos de variáveis e palavras-chave em Python
Torne suas funções mais flexíveis e fáceis de usar com essas variações de argumentos padrão.
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 tornar 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 funcionam os dois argumentos variáveis nas funções Python, é essencial entender por que eles existem. Uma função simples declara um número fixo de argumentos anônimos assim:
def addnum(a, b, c):
return a + b + c
Esta função funciona bem, mas há espaço para melhorias. O maior problema é que ele lida apenas com dois argumentos, portanto 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.
Claro, você poderia criar mais funções para aceitar diferentes números de argumentos. Mas isso é inconveniente e não terá uma boa escalabilidade. Você também precisará criar uma nova função sempre que quiser lidar com um novo número de entradas.
É aí que entram os argumentos variáveis e os argumentos 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 onde você deseja dar ao usuário a capacidade de somar 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 maneira:
def addnum(*args):
total = 0
for num in args:
total = total + num
return total
O trecho de código acima usa um loop for para iterar pelas entradas fornecidas.
Você pode então chamar a função addnum com argumentos variáveis e ela funcionará sem gerar um erro:
print(addnum(10, 1, 12, 12, 4, 54, 5)) ## returns 98
print(addnum(14, 54, 5)) # returns 73
print(addnum(10, 5)) # returns 15
O que é **kwargs em Python?
Embora *args e **kwargs nos permitam 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, argumentos de palavras-chave são apenas nomes sofisticados para argumentos com 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 nome de parâmetro. Aqui está um exemplo de como usar **kwargs em Python:
def weekly_attendance(**weekdays):
total_attendees = 0
for attendees in weekdays.values():
total_attendees = total_attendees + attendees
return total_attendees
print(weekly_attendance(monday = 265, tuesday = 698, wednesday = 365, thursday = 463, friday = 234)) # returns 2025
print(weekly_attendance(monday = 265, friday = 234)) # returns 499
print(weekly_attendance(wednesday = 365, thursday = 463, friday = 234)) # returns 1062
O trecho de código acima também usa um loop for, mas desta vez com o método values() integrado do Python. Esse método retorna um objeto de visualização de todos os valores do dicionário. O métodovalues() permite percorrer um dicionário Python sem complicações.
Use argumentos variáveis para tornar suas funções Python flexíveis
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 muito simples de usar e com eles você pode tornar suas funções e programas mais flexíveis.
Seguindo as etapas e trechos 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.