是否有可能调用一个函数,处理它的一些条件,爆发,再次调用它并从它停止的地方拾取它?

时间:2012-02-04 05:13:55

标签: python function

如果我有:

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

我可以突然说出第三个条件的结束,做一些其他的处理,然后当我再次调用它时,让它从它停止的地方开始?

1 个答案:

答案 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

但是,可能有更好的方法来做你想做的事。