lingedu 发表于 2020-9-12 13:41:01

生成器问题求解?

def muGen():
    print('生成器被执行!')
    yield 1
    yield 2


为什么,运行结果如下
>>next(muGen())
生成器被执行!
1
>>next(muGen())
生成器被执行!
1

而不是
>>next(muGen())
生成器被执行!
1
>>next(muGen())
2

hrp 发表于 2020-9-12 13:46:36

你这样调用生成器实际上每次调用的都是一个新的生成器,而不是同一个生成器,应该这样先把生成器保存到变量,再调用:
def muGen():
    print('生成器被执行!')
    yield 1
    yield 2

scq = muGen()

print(next(scq))
print(next(scq))

jack_xy 发表于 2020-9-12 13:51:41

应该是这样写:
mygen = muGen()
next(mygen)
next(mygen)
next(muGen())你每次都是生成的一个新的对象,都是从头开始执行的。
页: [1]
查看完整版本: 生成器问题求解?