【发布时间】:2020-06-07 16:25:00
【问题描述】:
我需要为函数创建装饰器。它应该是函数的 20 倍返回结果,之后 20 次应该只返回 none 和“内存不足”字符串。
我写了类似的东西,但它调用了 40 次函数。我是装修新手,谁能帮帮我?
我的代码:
def oom(func):
count = 0
def oomHelper(*args):
if count < 20:
func(*args)
else:
print('Out Of memory')
return(None)
return oomHelper
count = count + 1
@oom
def addTwo(a,b):
c = a+b
return(print(c))
addTwo(1,4)
addTwo(1,4)
addTwo(1,4)
.
.
addTwo(1,4)
addTwo(1,4)
addTwo(1,4)
addTwo(1,4)
x25
我除了有 20 个结果和 5 个内存不足。但我得到了:
result1
restult2
.
.
.
result20
out of memory
result21
result22
...
【问题讨论】:
-
退货后不能打印
-
对我来说很好用
-
如何称呼“addTwo”(编辑问题以将其显示为格式正确的代码)?
-
@martin, 19 结果...你是从 0 开始数的吗?因为如果你这样做了,那么就有 20
-
在“oomHelper”中,变量“count”必须声明为“nonlocal”。