【发布时间】:2020-05-10 06:56:11
【问题描述】:
当我们只能使用 1 层时,为什么我们要使用具有 2 层功能的装饰器?
例如:
def time_func(func):
print('Starting')
t0=time()
out = func()
print('Ending',time()-t0
return out
现在 time_func() 可以接收任何函数并像装饰器一样完成它的工作。我错过了什么?
【问题讨论】:
-
装饰器在每次调用装饰函数时不被调用。
-
user2357112 我试过了,我没有把它用作装饰器。我只是把它当作一个函数来使用。
-
和MaxiMouse,那么如果每次调用装饰函数时都没有调用装饰器怎么办?我知道它在技术上是这样工作的,但在实践中有什么好处?
-
装饰器被调用一次并且应该返回一个替换被装饰函数的函数。根据这个定义,你的问题的答案应该是显而易见的。