def func():
print("1--start")
print("1-蛋")
yield"蛋1"
print("2-蛋")
yield"蛋2"
print("取最后一个")
res = func() #res是迭代器对象print(next(res))
print(next(res)) #next(迭代器对象)
print(next())
举例2
举例循环10次(python2和python3的区别)
for i in range(1,11)
print(i) #1-10的打印出来
python2:range(1,5) --->[1,2,3,4]
python3: range(1,5)--->range对象--->生成器--->迭代器
res =range(1,5)
print(res)
举例3
自定义range功能,创建一个自定义的生成器
def my_range(start, end, move=1):
while start < end:
yield start
start += move
for line in my_range(1,7,2)
print(line)
1、什么是生成器?
生成的工具。生成器是一个“自定义”的迭代器,本质上是一个迭代器。
2、如何实现生成器
但凡在函数内部定义了的yield,调用函数时,函数体代码不会执行,会返回一个结果,该结果就是一个生成器。
yield:每一次yield都会往生成器对象中添加一个值。
yield只能在函数内部定义
yield可以保存函数的暂停状态。
yield与return
相同点:返回值的个数都是无限制的。
不同点:return只能返回一个值,yield可以返回多个值。
原文:https://www.cnblogs.com/medigrat/p/11857604.html