This question already has an answer here:
Decorator execution order
                                
                                    (1个答案)
                                
                        
                                4年前关闭。
            
                    
我在与装饰器一起玩,想出了以下代码。

def first(fn):
    def wrapper():
        print 'Before First'
        fn()
    return wrapper

def second(fn):
    def wrapper():
        print 'Before Second'
        fn()
    return wrapper

@second
@first
def fn():
    print 'The Original Function'

fn()


我得到如下输出

Before Second
Before First
The Original Function


我真的没收到订单。我读过某个地方,装饰器以相反的顺序被调用,我的意思是第一个应该首先被调用,第二个应该被第二个调用。但输出表明并非如此。
这是怎么回事?

最佳答案

您从原始功能开始。然后上去。想象一下:second(first(fn))。

this answer中查看更多

关于python - 装饰器如何链接工作? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34173364/

10-13 00:31