如果我有:
def foo(x):
if x == y:
blah
elif x == z:
blah1
if x == y:
blah2
elif x == a:
blah3
if x == y:
blah
elif x == y:
blah4
if x == b:
blah5
elif x == c:
blah6
我可以突然说出第三个条件的结束,做一些其他的处理,然后当我再次调用它时,让它从它停止的地方开始?
答案 0 :(得分:6)
正如Wooble所说,你可以使用发电机,至少如果我理解你想要什么。我在野外看过几次,但很少见。
def foo(x):
if x == 6:
print 'six'
elif x == 3:
print 'three'
yield
if x > 4:
print 'greater than four'
else:
print 'not greater than four'
yield
可以产生
>>> f = foo(6)
>>> f
<generator object foo at 0x1004b25a0>
>>> next(f)
six
>>> next(f)
greater than four
>>> next(f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
但是,可能有更好的方法来做你想做的事。