【发布时间】:2020-11-14 19:29:40
【问题描述】:
我有一个作为可迭代生成器的类(根据Best way to receive the 'return' value from a python generator),我想通过for 循环部分使用它。
我不能使用next(如Python -- consuming one generator inside various consumers),因为第一次部分消费使用了一个只接受迭代器的库。如何从库函数停止的地方继续使用生成器?
(相关:Pause Python Generator、Is there a way to 'pause' or partially consume a generator in Python, then resume consumption later where left off?)
class gen(): # https://stackoverflow.com/q/34073370
def __iter__(self):
for i in range(20):
yield i
# I want to partially consume in the first loop and finish in the second
my_gen_2 = gen()
for i in my_gen_2: # imagine this is the internal implementation of the library function
print(i)
if i > 10: # the real break condition is when iterfzf recieves user input
break
for i in my_gen_2: # i'd like to process the remaining elements instead of starting over
print('p2', i)
# the confusion boils down to this
my_gen = gen()
for i in my_gen:
print(i) # prints 1 through 20 as expected
for i in my_gen:
print('part two', i) # prints something, even though the generator should have been "consumed"?
【问题讨论】: