Modificando Funções
Na programação, as funções são ferramentas dinâmicas que podem se adaptar a diferentes situações e necessidades. Elas não são apenas blocos de código fixos. Você pode aprimorar funções para torná-las mais versáteis e amigáveis ao usuário em vários contextos.
Neste capítulo, exploraremos algumas técnicas importantes para modificar funções, como o uso de argumentos padrão e argumentos nomeados.
Vamos começar com um exemplo simples de modificação de funções para melhorar sua utilidade em nosso sistema de gerenciamento de loja de alimentos:
Argumentos Padrão
Argumentos padrão são um recurso útil em Python que permitem especificar valores padrão para parâmetros de função.
Na função apply_discount()
, o parâmetro discount
é definido como 0.10
por padrão. Isso significa que a função aplicará automaticamente um desconto de 10% a menos que especificado de outra forma. Como visto na variável default_discount_price
, podemos chamar a função apenas com o parâmetro price
.
No entanto, se necessário, podemos substituir o valor padrão passando tanto o price
quanto um discount
personalizado (por exemplo, 0.20
para 20%) conforme demonstrado com a variável custom_discount_price
.
# Define a function with a default `discount` argument def apply_discount(price, discount=0.10): discounted_price = price * (1 - discount) return discounted_price # Call the function without providing a `discount`, using the default value default_discount_price = apply_discount(100) print(f"Price after applying the default discount: ${default_discount_price}") # Call the function with a custom `discount` value custom_discount_price = apply_discount(100, 0.20) print(f"Price after applying a custom discount: ${custom_discount_price}")
Argumentos Nomeados
Argumentos nomeados em Python permitem que você passe argumentos nomeando explicitamente cada parâmetro, tornando suas chamadas de função mais legíveis e flexíveis. Isso é particularmente útil quando uma função tem múltiplos parâmetros ou quando a ordem dos argumentos pode ser confusa.
No exemplo a seguir, tanto price
quanto discount
são especificados, enquanto o parâmetro tax
permanece com seu valor padrão, proporcionando flexibilidade sem comprometer a clareza.
# Function where `tax` has a default value def calculate_total(price, discount, tax=0.05): total = price * (1 + tax) * (1 - discount) return total # Calling the function using keyword arguments total_cost = calculate_total(price=100, discount=0.15) print(f"Total cost after applying discount: ${total_cost}")
Nota
A ordem dos parâmetros não importa quando eles são passados usando argumentos nomeados.
Swipe to start coding
Nesta tarefa, você criará uma série de funções para calcular o custo total de um produto aplicando tanto um desconto quanto um imposto. Essas funções utilizarão argumentos de palavra-chave e valores padrão para proporcionar flexibilidade em seu uso.
Instruções de Código
- Defina uma função
apply_discount()
que aceiteprice
e um parâmetro opcionaldiscount
com um valor padrão de 0.05 (5%). Esta função deve retornar o preço após aplicar o desconto. - Defina uma função
apply_tax()
que aceiteprice
e um parâmetro opcionaltax
com um valor padrão de 0.07 (7%). Esta função deve retornar o preço após adicionar o imposto. - Defina uma função
calculate_total()
que recebaprice
como um parâmetro obrigatório e parâmetros opcionaisdiscount
etax
com valores padrão de 0.05 e 0.07, respectivamente. Esta função deve usarapply_discount()
eapply_tax()
para calcular o preço total após aplicar tanto o desconto quanto o imposto. - Use a função
calculate_total()
com um preço de120
, utilizando os valores padrão de desconto e imposto. - Chame a função
calculate_total()
novamente com um preço de100
, especificando um desconto personalizado de 0.10 (10%) e imposto de 0.08 (8%) usando argumentos de palavra-chave.
Requisitos de Saída
- Imprima o custo total com desconto e imposto padrão usando a mensagem:
Total cost with default discount and tax: $<total_price_default>
- Imprima o custo total com desconto e imposto personalizado usando a mensagem:
Total cost with custom discount and tax: $<total_price_custom>
Nota
Ao definir funções com parâmetros regulares e padrão, sempre coloque os parâmetros regulares primeiro, seguidos pelos parâmetros padrão. Da mesma forma, ao chamar uma função com argumentos de palavra-chave, os parâmetros regulares devem ser passados primeiro, com os argumentos de palavra-chave seguindo.
Solução
Obrigado pelo seu feedback!