def foo():
print("starting...") # 第1步
while True:
res = yield 4 # 第2步 第4步
print("res:",res) # 第3步
g = foo()
print(next(g))
print("*"*20)
print(next(g))
starting...
4
********************
res: None
4
send
def foo():
print("starting...")
while True:
res = yield 4
print("res:",res)
g = foo()
print(next(g))
print("*"*20)
print(g.send(7)) #接着上一次(return 4之后)执行,将7赋给res
starting...
4
********************
res: 7
4
yield组合
如果使用List,会占很多的内存
for i in range(1000):
print(i)
使用yield组合成生成器进行实现
def foo(num):
print("starting...")
while num<10:
num=num+1
yield num
for n in foo(0):
print(n)
starting...
1
2
3
4
5
6
7
8
9
10