创建生成器的两种方式:
1.列表生成式
2.yield
###################################################
输入:
def foo():
print('ok')
yield 1
print('alright')
yield 2
g=foo()
next(foo())
next(foo())
next(foo())
next(foo())
next(g)
next(g)
################################
s = (x for x in range(5))
print(next(s)) #输出0
for i in s: #因为上面用next已经生成了0,所以这里的for输出1至4
print(i)
输出:
ok #由next(foo())得到
ok #由next(foo())得到
ok #由next(foo())得到
ok #由next(foo())得到
ok #由next(g)得到
alright #由next(g)得到
0 #由next(s)得到
1 #由for里的print(i)得到
2 #由for里的print(i)得到
3 #由for里的print(i)得到
4 #由for里的print(i)得到
###################################################
从输出看出,如果要foo从yield 1 到yield 2一直生成下去,要将函数foo()赋值给一个变量g,然后next(g)而不能直接next(foo())
浙公网安备 33010602011771号