python yield
什么是生成器:
只要在函数体内出现yield关键字,那么再执行函数就不会执行函数代码,会得到一个结果,该结果就是生成器
yield的功能:
1、yield为我们提供了一种自定义迭代器对象的方法
2、yield与return的区别1:yield可以返回多次值 #2:函数暂停与再继续的状态是由yield帮我们保存的
#python 遇到yield会暂停,如果后边跟的有值会返回 类似return 但不会终止程序
def func(): print('=====>1') yield 1 print('=====>2') yield 2 print('=====>3') yield 3 #生成器就是迭代器 a = func() print(a) res = next(a) print(res) ----------------------------- <generator object func at 0x000001CBEC002C78> =====>1 1
自定义range
def my_range(start,stop,step): while start < stop: yield start start += step for i in my_range(1,10,2): print(i)
yield带返回值
def eat(): foo = 111 while True: food = yield foo print('吃%s' % food) g = eat() next(g) print(g.send('烧饼'))