Resumo : neste tutorial, você aprenderá sobre os argumentos de palavras-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 do desconto:
def get_net_price(price, discount):
return price * (1-discount)
Linguagem de código: Python ( python )
A get_net_price()
função possui dois parâmetros: price
e discount
.
Veja a seguir como chamar a get_net_price()
função 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)
Linguagem de código: Python ( python )
Saída:
90.0
Linguagem de código: Python ( python )
Na get_net_price(100, 0.1)
chamada de função, passamos cada argumento como um argumento posicional. Em outras palavras, passamos o price
argumento primeiro e o discount
argumento depois.
No entanto, a chamada de 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 argumento é price
e qual é o discount
.
Além disso, ao chamar a get_net_price()
função, você precisa saber a posição de cada argumento.
Caso contrário, a função calculará net_price
incorretamente. Por exemplo:
net_price = get_net_price(0.1, 100)
print(net_price)
Linguagem de código: Python ( python )
Saída:
-9.9
Linguagem de código: Python ( python )
Para melhorar a legibilidade, Python introduz argumentos de palavras-chave.
O seguinte mostra a sintaxe do argumento da palavra-chave:
fn(parameter1=value1,parameter2=value2)
Linguagem de código: Python ( python )
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)
Linguagem de código: Python ( python )
O seguinte mostra como usar a sintaxe do argumento da palavra-chave para chamar a get_net_price()
função:
net_price = get_net_price(price=100, discount=0.1)
Linguagem de código: Python ( python )
Ou:
net_price = get_net_price(discount=0.1, price=100)
Linguagem de código: Python ( python )
Ambos retornam o mesmo resultado.
Quando você usa argumentos de palavras-chave, seus nomes são importantes, não suas posições.
Observe que você pode chamar uma função misturando argumentos posicionais e de palavras-chave. Por exemplo:
net_price = get_net_price(100, discount=0.1)
Linguagem de código: Python ( python )
Argumentos de palavras-chave e parâmetros padrão
Suponha que você tenha a seguinte get_net_price()
função que calcula o preço líquido a partir do preço de venda, imposto e desconto.
def get_net_price(price, tax=0.07, discount=0.05):
return price * (1 + tax - discount)
Linguagem de código: Python ( python )
Na get_net_price()
função, os parâmetros de imposto e desconto possuem valores padrão de 7%
e 5%
respectivamente.
O seguinte chama a get_net_price()
função e usa os valores padrão para tax
os discount
parâmetros e:
net_price = get_net_price(100)
print(net_price)
Linguagem de código: Python ( python )
Saída:
102.0
Linguagem de código: Python ( python )
Suponha que você queira usar o valor padrão para o tax
parâmetro, mas não discount
. A chamada de função a seguir não funciona corretamente.
net_price = get_net_price(100, 0.06)
Linguagem de código: Python ( python )
… porque o Python atribuirá 100
preços e 0.1
impostos, não descontos.
Para corrigir isso, você deve usar argumentos de palavras-chave:
net_price = get_net_price(price=100, discount=0.06)
print(net_price)
Linguagem de código: Python ( python )
Saída:
101.0
Linguagem de código: Sessão Shell ( shell )
Ou você pode misturar os argumentos posicionais e de palavras-chave:
net_price = get_net_price(100, discount=0.06)
print(net_price)
Linguagem de código: Python ( python )
Saída:
101.0
Linguagem de código: Sessão Shell ( shell )
Requisitos de argumento de palavra-chave Python
Depois de usar um argumento de palavra-chave, você precisará 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)
Linguagem de código: Python ( python )
Erro:
SyntaxError: positional argument follows keyword argument
Linguagem de código: Sessão Shell ( shell )
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)
Linguagem de código: Python ( python )
Resumo
- Use a palavra-chave argumentos do 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.