Entendo que esse é um exemplo didático para usar o conceito de Closure, como foi usado no gabarito:
def criar_desconto(porcentagem):
def calcular_preco(valor):
return valor - (valor * (porcentagem / 100))
return calcular_preco
desconto = float(input("Digite a porcentagem de desconto: "))
calcular_preco_final = criar_desconto(desconto)
valor = float(input("Digite o valor da compra: "))
print(f"Preço final com desconto: {calcular_preco_final(valor)}")
Mas entendo que para esse caso, o Closure é dispensável, como na minha solução abaixo:
def calcular_preco(valor, desconto):
return valor - (valor * (desconto / 100))
desconto = float(input("Digite a porcentagem de desconto: "))
valor = float(input("Digite o valor da compra: "))
preco_final = calcular_preco(valor, desconto)
print(f"Preço final com desconto: {preco_final:.2f}")
Pode me explicar melhor esse conceito ou me indicar uma documentação sobre o assunto para eu entender quando é melhor utilizar o Closure? Ainda não está claro para mim. E entendo que no dia a dia, eu terei que entender a necessidade/problema e desenvolver a melhor solução.