Python之Python高级特性2.0-生成器

5.生成器
(1)定义
# 一边循环一边计算的机制,节省大量空间

# 形式:(i**i for i in range(10))

Python之Python高级特性2.0-生成器

(2)查看方式

a. g.next()(python2)

    g.__next__()(python3)

b.next(g)

c.for循环遍历

Python之Python高级特性2.0-生成器

Python之Python高级特性2.0-生成器

(3)yield关键字
a.函数返回生成器:存储yield后面的值,并实现函数的断点。
b.传值到函数中:用g.send('')传值给yield,并执行函数中yield之后的代码。

              此时yield后面的值是g.send()的返回值。

Python之Python高级特性2.0-生成器

Python之Python高级特性2.0-生成器

Python之Python高级特性2.0-生成器

Python之Python高级特性2.0-生成器

Python之Python高级特性2.0-生成器

(4)生成器的其他函数

a.g.close():关闭停用

Python之Python高级特性2.0-生成器

b.g.throw():发送错误(不影响本次输出)

Python之Python高级特性2.0-生成器

c.g.gi_running():是否运行中