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个元素。