为什么我的装饰导致功能运行

时间:2020-08-23 17:04:31

标签: python decorator

我正在尝试创建一个计时器包装器,该包装器返回函数运行所需的时间。

from datetime import datetime as dt
import time

def timer_wrapper(func):
    """
    Timer wrapper parent
    """
    def wrapper(*args, **kwargs):
        """
        Timer wrapper child
        """
        start = dt.now()
        func(*args, **kwargs)
        end = dt.now()
        duration = (end - start)
        print(f"{func.__name__} took {duration}")
    return wrapper()

@timer_wrapper
def time_waster():
    """
    Time waster
    """
    for n in range(3):
        print("wasting time")
        time.sleep(1)

我对此有2个问题。

  1. jupyter笔记本中的第二个函数(time_waster)每当我将装饰器放在上面时都执行,并按预期运行。但是,我只想用装饰器定义函数,而不要在其中执行。

  2. 当我在另一个单元格中调用time_waster()时,它将返回TypeError: 'NoneType' object is not callable

我在做什么错了?

谢谢!

0 个答案:

没有答案