Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Faça como eu fiz: gerador de funções personalizadas | Praticando Python: funções

def gerar_desconto(percentual):
    def aplicar_desconto(valor):
        return valor - (valor * percentual / 100)
    return aplicar_desconto

percentual = float(input("Digite a porcentagem de desconto: "))
valor_compra = float(input("Digite o valor da compra: "))

calcular = gerar_desconto(percentual)

print(f"Preço final com desconto: {calcular(valor_compra)}")

Explicação:
Criei uma função externa (gerar_desconto) que recebe a porcentagem de desconto e retorna uma função interna (aplicar_desconto). A função interna utiliza o valor do desconto definido anteriormente, caracterizando uma closure, pois ela "lembra" da variável percentual mesmo após a execução da função externa. Assim, é possível gerar diferentes funções de desconto de forma personalizada e reutilizável.

1 resposta

Oi, estudante. Tudo bem com você?

A implementação da estrutura de funções aninhadas demonstra uma excelente compreensão do conceito de closure em Python, configurando corretamente a retenção do escopo da função externa pela função interna mesmo após a finalização do escopo pai. A captura dos dados feita em float e a invocação dinâmica da closure foram codificadas com bastante precisão técnica.

Uma dica útil para expandir o potencial prático de closures no desenvolvimento envolve a criação de múltiplas funções especializadas a partir da mesma base, gerando um ecossistema reutilizável sem repetir código. Como exemplo desse dinamismo, você pode instanciar previamente variações fixas no corpo do programa escrevendo comandos específicos como desconto_dez = gerar_desconto(10) ou desconto_vinte = gerar_desconto(20), permitindo que regras de promoções corporativas sazonais fiquem pré-cadastradas na memória do sistema e prontas para receber diretamente os preços das mercadorias vendidos.

Parabéns pelo excelente desempenho na atividade, saiba que o fórum continua totalmente à disposição para suas futuras interações.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!