所以我有一个巨大的递归函数。在某些时候,它会找到一个结果,我需要它来停止所有功能。建议?
答案 0 :(得分:2)
假设您无法重构代码,可以使用生成器来实现此目的。假设我们有以下代码:
from __future__ import print_function
def g(n):
print("g before", n)
if n < 3:
for i in g(n+1):
yield i
else:
yield n
print("g after", n)
正常执行将是:
>> for i in g(0):
... print(i)
...
g before 0
g before 1
g before 2
g before 3
3
g after 3
g after 2
g after 1
g after 0
现在你想要的是产生3并在那里停止,所以我们只需获取第一个值:
>>> print(g(0).__iter__().next())
g before 0
g before 1
g before 2
g before 3
3