Argumentos de palavra-chave do Python

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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *