[Python] Sobre o uso de decoradores e do 'syntax-sugar' em Python [duplicada]

Discussão em 'Python' iniciado por Stack, Janeiro 10, 2025.

  1. Stack

    Stack Membro Participativo

    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:

    1. 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__)'?
    2. 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...

Compartilhe esta Página