関数ジェネレータとクラスジェネレータの動作が異なるのはなぜですか?つまり、クラスジェネレータでは、何度でもジェネレータを使用できますが、関数ジェネレータでは一度しか使用できません。なぜそうなのか? f_gen()
関数を呼び出す関数ジェネレータとPython 3のクラスジェネレータ
def f_counter(low,high):
counter=low
while counter<=high:
yield counter
counter+=1
class CCounter(object):
def __init__(self, low, high):
self.low = low
self.high = high
def __iter__(self):
counter = self.low
while self.high >= counter:
yield counter
counter += 1
f_gen=f_counter(5,10)
for i in f_gen:
print(i,end=' ')
print('\n')
for j in f_gen:
print(j,end=' ') #no output
print('\n')
c_gen=CCounter(5,10)
for i in c_gen:
print(i,end=' ')
print('\n')
for j in c_gen:
print(j,end=' ')