Skip to main content
 首页 » 编程设计

python之装饰器的问题

2025年05月04日1052php

def my_decorator(func) : 
    print "I am a ordinary function" 
    def wrapper() : 
        print "I am function returned by the decorator" 
        func() 
    return wrapper 
def lazy_function() : 
    print "zzzzzzzz" 
 
functionDecorator=my_decorator(lazy_function) 

我在调试 IO 中

I am a ordinary function 

我不明白为什么会有任何输出。我明白为什么这一行:

functionDecorator() 

返回我:

I am function returned by the decorator 
another___zzzzzzzz 

但对于其余的我想我错过了什么

请您参考如下方法:

当您第一次调用 my_decorator 时,在它返回函数 wrapper 之前,它会打印您的消息。

尝试再次调用 functionDecorator(),您将不会得到第二次输出,因为该函数已经被 my_decorator 修饰过。但是,每次您调用 my_decorator 时,它都会打印您的消息,因为这是一个普通的函数调用(恰好也返回一个装饰函数)。

另请参阅 http://www.python.org/dev/peps/pep-0318/#current-syntax用于实现装饰器的替代语法。