Já sei o que são funções decoradoras e syntax-sugar '@' em Python. Mas tenho uma dúvida sobre seu funcionamento, a lógica por trás do que está sendo feita (nada aprofundado, claro). Vamos começar com o seguinte código que resume bem o uso de decoradores com syntax-sugar '@': def decorator_function(func): def intern_function(*args, **kwargs): print('Can I execute something beforehand to return the function value.') return func(*args, **kwargs) return intern_function @decorator_function def soma(x, y): print(soma.__name__) return x + y # soma = decorator_function(soma) -> isso torna-se denecessário com o uso do "@syntax-sugar" # print(soma(5, 7)) print(soma(5, 7)) Minhas duas perguntas são: Por que a função aninhada 'intern_function' da função decoradora 'decorator_function' substitui o nome da função decorada 'soma', como evidenciado pela linha 'print(soma.__name__)'? Como a função aninhada 'intern_funtion' sabe (ou lembra) os argumentos que foram passados para a função 'soma', na última linha? Está relacionado com a implementação interna do syntax-sugar ou do prórpio interpretador ou não? Continue reading...