【发布时间】:2014-05-21 01:14:44
【问题描述】:
我有一个递归函数(f 调用自己):
def f(x) :
....
我想多次运行这个函数。我使用以下装饰器:
def iter_f(func) :
def newf(x):
for i in range(10):
func(x)
return newf
@iter_f
def f(x): a RECURSIVE function.
当我调用 f(x) 时,我正在调用一个无限次迭代自身的函数。我很好奇仍然使用装饰器的解决方案是什么,没有将 f 包装在新函数 g 中,并装饰 g。
谢谢。
感谢您指出问题是由于 f 是递归的。
Decorating recursive functions in python这个帖子也有类似的问题,可能这里不是使用装饰器的好地方?
【问题讨论】:
-
请澄清——当您调用
f(x)时,您的函数会被无限次调用?当我运行你的代码时,我没有得到这种行为。f(x)我只被调用了 10 次。 -
是的,你是对的,很抱歉造成混乱,我会删除问题。
-
问题是因为f是递归函数造成的。