生成器函数的 next() 方法,什么情况下是提前调用?为什么提前调用yield会返回None?
来源:9-3 生成器函数的使用

Xiaoyu_Wu
2019-10-21
老师,您好~
今天在学习python 生成器相关知识时,遇到一个不能理解的知识点,生成器有一个next()方法,书里说,当提前调用它时,yield 会返回None,请看下面示例代码:
# -*- coding: utf-8 -*-
def gen():
for i in range(10):
x = yield i
print(x)
G = gen()
print(next(G)) # yield 返回 0
print(next(G)) # yield 返回 None 再打印1
print(next(G)) # yield 返回 None 再打印2
"""
输出如下:
0
None
1
None
2
"""
请问老师,什么是生成器的提前调用?为什么这里会yield返回None?
谢谢~
写回答
1回答
-
你要清楚none是执行哪一行代码生成的 是执行 print(x)生成的,课程中会讲解生成的send方法的,看了就会理解的
012019-10-25
相似问题