day14.1_生成器
一、什么是生成器?
在函数内但凡出现yield关键字,再调用函数就不会执行函数体代码,会返回一个值,改值称之为生成器,生成器的本质就是迭代器。
二、为什么要有生成器?
生成器是一种自定义迭代器的方式
三、生成器用来干什么?
print(res1) # first1 # first2 # first3
2.for 循环的底层原理
for i in x: # x 为可迭代对象 # 1. res1=x.__iter__() 先转为迭代器对象 # 2. res1.__next__() 再依次取值 # 3. for 自动检测,取完值之后自动停止取值
3.总结yield的功能:
3.1 提供自定义迭代器的方式
3.2 yield 可以暂时停止函数的执行,并有返回值
4. yield 和 return 的异同点
相同点:都是再函数内使用,都可以返回值且没有类型限制和个数
不同点:return 只可返回一次值且下面的同级代码不会继续执行,yield 可以返回多次值并且只是让该部分代码暂时停止住,若有需要,可以继续执行