Resumo: neste tutorial, você aprenderá sobre os argumentos de palavra-chave do Python e como usá-los para tornar as chamadas de função mais óbvias.
Introdução aos argumentos de palavras-chave do Python
Vamos começar com uma função simples que calcula o preço líquido a partir do preço de venda e desconto:
def get_net_price(price, discount):
return price * (1-discount)
A função get_net_price()
tem dois parâmetros: price
e discount
.
Veja a seguir como chamar a função get_net_price()
para calcular o preço líquido a partir do preço 100
e do desconto 10%
:
net_price = get_net_price(100, 0.1)
print(net_price)
Saída:
90.0
Na chamada da função get_net_price(100, 0.1)
, passamos cada argumento como um argumento posicional. Em outras palavras, passamos o argumento price
primeiro e depois o argumento discount
.
No entanto, a chamada da função get_net_price(100, 0.1)
tem um problema de legibilidade. Porque, olhando apenas para essa chamada de função, você não sabe qual é o argumento price
e qual é o discount
.
Além disso, ao chamar a função get_net_price()
, você precisa saber a posição de cada argumento.
Caso contrário, a função calculará incorretamente net_price
. Por exemplo:
net_price = get_net_price(0.1, 100)
print(net_price)
Saída:
-9.9
Para melhorar a legibilidade, o Python introduz os argumentos de palavra-chave.
O seguinte mostra a sintaxe do argumento de palavra-chave:
fn(parameter1=value1,parameter2=value2)
Ao usar a sintaxe de argumento de palavra-chave, você não precisa especificar os argumentos na mesma ordem definida na função.
Portanto, você pode chamar uma função trocando as posições dos argumentos assim:
fn(parameter2=value2,parameter1=value1)
Veja a seguir como usar a sintaxe do argumento de palavra-chave para chamar a função get_net_price()
:
net_price = get_net_price(price=100, discount=0.1)
Ou:
net_price = get_net_price(discount=0.1, price=100)
Ambos retornam o mesmo resultado.
Quando você usa os argumentos de palavra-chave, seus nomes são importantes, não suas posições.
Observe que você pode chamar uma função misturando argumentos posicionais e palavras-chave. Por exemplo:
net_price = get_net_price(100, discount=0.1)
Argumentos de palavra-chave e parâmetros padrão
Suponha que você tenha a seguinte função get_net_price()
que calcula o preço líquido do preço de venda, imposto e desconto.
def get_net_price(price, tax=0.07, discount=0.05):
return price * (1 + tax - discount)
Na função get_net_price()
, os parâmetros de imposto e desconto têm valores padrão de 7%
e 5%
respectivamente.
O seguinte chama a função get_net_price()
e usa os valores padrão para os parâmetros tax
e discount
:
net_price = get_net_price(100)
print(net_price)
Saída:
102.0
Suponha que você queira usar o valor padrão para o parâmetro tax
, mas não para discount
. A seguinte chamada de função não funciona corretamente.
net_price = get_net_price(100, 0.06)
… porque o Python atribuirá 100
ao preço e 0.1
ao imposto, não ao desconto.
Para corrigir isso, você deve usar argumentos de palavra-chave:
net_price = get_net_price(price=100, discount=0.06)
print(net_price)
Saída:
101.0
Ou você pode misturar os argumentos posicionais e palavras-chave:
net_price = get_net_price(100, discount=0.06)
print(net_price)
Saída:
101.0
Requisitos de argumento de palavra-chave do Python
Depois de usar um argumento de palavra-chave, você precisa usar argumentos de palavra-chave para os parâmetros restantes.
O seguinte resultará em um erro porque usa o argumento posicional após um argumento de palavra-chave:
net_price = get_net_price(100, tax=0.08, 0.06)
Erro:
SyntaxError: positional argument follows keyword argument
Para corrigir isso, você precisa usar o argumento de palavra-chave para o terceiro argumento assim:
net_price = get_net_price(100, tax=0.08, discount=0.06)
print(net_price)
Resumo
- Use os argumentos de palavra-chave Python para tornar sua chamada de função mais legível e óbvia, especialmente para funções que aceitam muitos argumentos.
- Todos os argumentos após o primeiro argumento de palavra-chave também devem ser argumentos de palavra-chave.