【发布时间】:2018-03-07 04:11:11
【问题描述】:
我正在通过实验示例研究装饰器和包装器,发现装饰器的行为我无法理解。
def decorator_function(original_function):
def wrapper_function():
print "wrapper is executed before {}".format(original_function.__name__)
return original_function() # Try it without ()
return wrapper_function
@decorator_function
def display():
print("display function ran!")
当我运行上面的函数时:
In [59]: display()
wrapper is executed before display
display function ran!
但是,当我将打印功能移到包装器之外时,包装器似乎根本没有运行。 (可能它跑了,但我没有看到证据。)
def decorator_function(original_function):
def wrapper_function():
#print "wrapper is executed before {}".format(original_function.__name__)
return original_function() # Try it without ()
print "wrapper is executed before {}".format(original_function.__name__)
return wrapper_function
@decorator_function
def display():
print("display function ran!")
然后我不再看到“包装器在...之前执行”。怎么会? 我在这里错过了什么?
In [63]: display()
display function ran!
【问题讨论】:
标签: python decorator wrapper python-decorators