我有一个生成器函数,在yield之前有一些代码,在yield以后有一些代码。有没有一种方法可以跳过在yield之后执行代码而不在yield之前执行代码?
我尝试探索itertools函数,但到目前为止还没有运气。
def func1():
print("Code before yield is executing")
yield
print("Code after yield is executing")
在这里,我试图编写一个自定义生成器,该生成器将在yield和stop之后执行该部分。
答案 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
循环消耗了生成器的其余部分。请注意,这是假设食用第一个元素时没有副作用,或者仍然需要副作用。