如何在生成器函数中屈服后增加生成器对象以执行代码?

时间:2019-07-11 21:49:09

标签: python generator

我有一个生成器函数,在yield之前有一些代码,在yield以后有一些代码。有没有一种方法可以跳过在yield之后执行代码而不在yield之前执行代码?

我尝试探索itertools函数,但到目前为止还没有运气。

def func1():
    print("Code before yield is executing")
    yield 
    print("Code after yield is executing")

在这里,我试图编写一个自定义生成器,该生成器将在yield和stop之后执行该部分。

2 个答案:

答案 0 :(得分:0)

类似:

def func1(exec = True):
    if exec:
        print("Code before yield is executing")
        yield 
    print("Code after yield is executing")

答案 1 :(得分:0)

一种方法是手动使用生成器:

gen = func1()
next(gen)
for x in gen:
   # do something with x here

调用next()将执行生成器的第一个元素并将其忽略。然后for循环消耗了生成器的其余部分。请注意,这是假设食用第一个元素时没有副作用,或者仍然需要副作用。