生成器就是迭代器,含有迭代器的一切特性(__nex__,__iter__)
生成器函数即含有yield关键字的函数,当执行生成器函数的时候,函数内的代码不会执行,执行生成器函数,并将其赋值给一个变量时,该变量即为一个生成器对象,对该生成器对象迭代取值,函数内的代码开始按照yield运行
def talk(): print(1) x = yield print(x) print(2) y =yield print(y) print(3) z = yield print(z) g = talk() #生成一个生成器对象
next(g) #函数中的代码执行到第一个yield之前
next(g)
g.send('a') #send相当于next,只是会把send后面的值赋给yield
#1
#None
#2
#a
#3