生成器

生成器

1.什么是生成器:

生成的工具,本质是一个自定义的迭代器

2.如何实现生成器:

但凡在函数内部定义了yield,调用函数时,函数体代码不会执行,会返回一个结果,该结果就是生成器。

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