请帮助解决python中的装饰器问题

时间:2021-05-31 15:26:22

标签: python-3.x

从下面的例子中,我试图计算 long_time() 和 long_time2() 的性能:

但是出现错误提示“TypeError: performance() missing 1 required positional argument: 'fun':”

from time import time

def performance(fun):
    def wrapper_fun(*args , **keyargs):
        t1 = time()
        res = fun(*args,**keyargs)
        t2 = time()
        print(f'took {t2 -t1} s')
        return res
    return wrapper_fun
    
    
@performance()
def long_time():
    print('1')
    for i in range(100000):
        i*5
        
        
@performance()
def long_time2():
    print('2')
    for i in list(range(100000)):
        i*5
        
long_time()

long_time2()  

 

1 个答案:

答案 0 :(得分:0)

不要呼叫performance。而不是 @performance()@performance

@performance
def long_time():
    print('1')
    for i in range(100000):
        i*5

参数 fun 将作为装饰器使用(python 调用该方法)自动传递。