Python 装饰者-试图理解这个简单的例子
基本上,我正在尝试实现一个计时装饰器:Python 装饰者-试图理解这个简单的例子,python,decorator,Python,Decorator,基本上,我正在尝试实现一个计时装饰器: def laptime(func): def inner(*args): start = time.time() r = func(*args) print time.time()-start return r @laptime def loop(a,b): for i in range(a,b): print (i) loop(2, 1000) 我尝试了很多方法
def laptime(func):
def inner(*args):
start = time.time()
r = func(*args)
print time.time()-start
return r
@laptime
def loop(a,b):
for i in range(a,b):
print (i)
loop(2, 1000)
我尝试了很多方法使它工作,但他们都返回有趣的结果,我不明白。。。我知道关于这个主题还有很多其他的问题,但不知何故,这些问题对我更好地理解应该如何做没有帮助。装饰函数将函数作为参数并返回修改过的函数。您的
laptime
没有返回修改后的函数(internal
),并且它在returnr
上有错误的缩进
这是一个修复过的版本。我还对其进行了更改,使其能够在Python2和Python3上正确运行
import time
def laptime(func):
def inner(*args):
start = time.time()
r = func(*args)
print(time.time() - start)
return r
return inner
@laptime
def loop(a,b):
for i in range(a,b):
print(i)
loop(2, 10)
输出
2
3
4
5
6
7
8
9
0.000479936599731
@decorator
语法一开始可能有点神秘,但最终你会习惯的
做
完全等同于此:
def loop(a,b):
for i in range(a,b):
print(i)
loop = laptime(loop)
是的,我想我现在感觉好多了。。。直到下次!谢谢
def loop(a,b):
for i in range(a,b):
print(i)
loop = laptime(loop)