gpt4 book ai didi

python - 装饰器——试图理解这个简单的例子

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:00 25 4
gpt4 key购买 nike

基本上我正在尝试实现一个计时装饰器:

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 语法起初可能有点神秘,但您最终会习惯它。 :)

@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)

关于python - 装饰器——试图理解这个简单的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43608970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com