(34人评价)
Python全栈+数据分析系统辅导课

名师答疑,全网最新内容,满足就业+辅修双目标

价格 ¥ 4999.00

def 函数名()

       程序段1

       yield 值1

       程序段2

       yield 值2

       ……

对象=函数名()

变量=next(对象)——第x次执行时会自动执行程序段x并返回值x。

 

def 函数名(x)

       程序段1

       y=yield f(x)

       程序段2

       z=yield f(y)

       ……

对象=函数名()

变量=next(对象)或变量=对象.send(None)——根据x的值执行程序段1并返回y。

变量=对象.send(值)——将值赋给y执行程序段2并返回z(可迭代执行)。

 

对于以上两种生成器,“yield 值”可以替换为“yield from 元组或列表或集合”,第x次迭代返回值为其第x个元素。

[展开全文]

生成器函数的关键字yield,本质是迭代器

判断是否为迭代器

相对于return,yield最大的不同在于他会记住当前返回的位置,下次继续执行后面的代码

当后面没有yield的时候抛出stopiteration错误,被next()函数捕获并停止  。

关键字send

从已有的数据库中逐个返回数据,yield from

 

[展开全文]