Python中perform装饰器内的print语句无输出,是什么原因?
问题原因
你写的装饰器本身逻辑没有错误,perform内部的print没有输出的核心原因是:你只完成了被装饰函数long_time的定义,没有主动调用这个函数。
@perform装饰器的作用是在long_time定义阶段,就把原long_time函数替换为perform返回的wrap包装函数,但wrap内部的计时、执行原函数、打印耗时的所有逻辑,只有在你实际调用long_time()的时候才会执行。
修复方案
在代码的末尾添加函数调用语句即可:
long_time()
运行后就会正常打印函数执行的耗时。
可选验证
如果想提前确认装饰器是否生效,可以在定义完long_time后添加一行打印:
print(long_time.__name__) # 输出结果为 wrap,说明函数已经被装饰器替换为包装函数
内容的提问来源于stack exchange,提问作者Yo_Panda
相关产品推荐
相关产品推荐

