我有此函数f1(gen,s),如果s为正,我想使用传递的生成器gen,如果s为负,则不处理就返回它。
def f1(gen, s):
if s > 0:
# Additional processing
while True:
print('consuming iterator')
yield next(gen)
else:
return gen
print(len(list(f1(range(3), -1))))
Output: 0
不起作用的部分是else部分,由于if语句第一部分中的yield next(gen)而返回空生成器。
如果我在功能f中将其注释掉,则可以从其他部分获得所需的对象:
def f(gen, s):
if s > 0:
# Additional processing
while True:
print('consuming iterator')
# yield next(gen)
else:
return gen
print(len(list(f(range(3), -1))))
Output :3
我的问题是:为什么在这种情况下不应该执行的零件的成品率消耗了发电机发电量?
以及如何解决这个问题?