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用于实现装饰器的替代语法。
