[英]decorators - trying to understand this simple example
基本上我正在尝试实现一个时序装饰器:
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)
我尝试了许多方法让它起作用,但它们都返回了我不理解的有趣结果......我知道关于SO的主题还有其他多个问题,但不知何故它们对我来说没有任何帮助掌握如何做到这一点。
装饰器函数将函数作为参数并返回已修改的函数。 你的laptime
不返回修改后的函数( inner
),并且在return r
它有错误的缩进。
这是修复后的版本。 我也改变了它,因此它可以在Python 2和Python 3上正确运行。
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
语法@decorator
可能有点神秘,但你最终会习惯它。 :)
干
@laptime
def loop(a,b):
for i in range(a,b):
print(i)
完全等同于:
def loop(a,b):
for i in range(a,b):
print(i)
loop = laptime(loop)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.