1.什么是生成器:
生成的工具,本质是一个自定义的迭代器
2.如何实现生成器:
yield:
用于返回值,但不同于return,函数一旦遇到return就结束,而yield可以保存函数运行状态挂起函数,用来返回多个值。
定义一个迭代器对象:
def func():
print(‘开始准备下单‘)
print(‘1--火鸡蛋’)
yield‘火机蛋1‘
print(‘2--火机蛋2‘)
yield‘火机蛋2‘
print(’3--火机蛋3‘)
yield‘火机蛋3‘
print(‘取最后一个蛋,查看是否有‘)
res = func()
?
print(next(res))
print(next(res))
print(next(res))
print(next(res))
等同
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
定义一个range功能,创建一个自定义的生成对像
def my_range(start, end, move=1):
while start < end:
yield start
start += move
?
g_range = my_range(1, 5,1)
l = []
for i in g_range:
l.append(i)
print(l)
表达式形式的yield也可用于返回多个值,即变量名等一yield的形式
def eater():
print(‘ready to eat‘)
food_list = []
while True:
food = yield food_list
food_list.append(food)
e = eater()
next(e)
print(e.send(‘烧子鹅‘))
print(e.send(‘烧花鸭‘))
?
原文:https://www.cnblogs.com/cyfdtz/p/11892268.html