首先,如果这是一个重复的问题,我很抱歉。
假设我有一个简单的Python代码,名为decorator.py,这里带有装饰器:
`def decorator(func):
def wrapper():
print("Before function.")
val = func()
print("After function.")
return val
return wrapper() # <- please pay attention to this line`
@decorator
def hello():
print("hello!")
@decorator
def good_bye():
print("good_bye!")
@decorator
def thank_you():
print("thank_you!")
@decorator
def thanks_a_lot():
print("thanks_a_lot!")
运行代码后的结果
Before function.
hello!
After function.
Before function.
good_bye!
After function.
Before function.
thank_you!
After function.
Before function.
thanks_a_lot!
After function.
[Finished in 46ms]
这意味着 returnwrapper() 调用了我所有的函数? 在这种情况下,wrapper()和wrapper有什么区别。 感谢您的解释。
我尝试在调试模式下运行来找出答案,但仍然一无所获,我希望我能得到详细的解释
在这种情况下,调用wrapper()将立即执行该函数。如果您只返回包装器,那么您将返回函数本身,以便稍后可以由代码的另一部分调用