一. yield 的基本概念
1. yield 的作用是将函数变成生成器函数,即含 yield 的函数返回的是一个生成器对象 generator
# 普通函数
def func_1():
return 1
# 含 yield 的生成器函数
def func_2():
yield 1
print(type(func_1())) # 返回相应的数据对象 <class 'int'>
print(type(func_2())) # 返回生成器对象 <class 'generator'>
2. 调用生成器函数时,生成器函数不会完整执行整个函数的代码;当执行到 yield 代码处时,返回迭代值后,中断运行
3. 当生成器函数被下次迭代调用时,将从上次执行到的 yield 代码的下一句代码开始执行;这时生成器函数的本地变量保持跟上次中断执行时的状态完全一样
4. 因此,生成器函数的执行方式是中断式的处理方式,在调用和被调用的函数代码间,交叉执行; 生成器函数当次调用的后续代码,需要等下次调用时,才会继续执行;或当调用完全结束时,再由系统自动执行