python语法之生成器
程序员文章站
2023-01-25 12:50:49
一、生成器 1、定义 生成器内置有__iter__()和__next__()方法,所以生成器本质就是一个迭代器。 2、关键字:yield 若函数体内包含yield关键字,在调用函数时,并不会执行函数体代码,得到的返回值即是生成器对象。 def my_range(start,stop,step=1): ......
一、生成器
1、定义
生成器内置有__iter__()和__next__()方法,所以生成器本质就是一个迭代器。
2、关键字:yield
若函数体内包含yield关键字,在调用函数时,并不会执行函数体代码,得到的返回值即是生成器对象。
def my_range(start,stop,step=1): while start < stop: yield start start += step #g_range就是一个生成器 g_range = my_range(1,5,2) print(g_range) #<generator object my_range at 0x000000000293d8e0>
#for循环迭代 for i in my_range(1,9,2): print(i)
3、yield 与return 的区别
区别 | yield | return |
相同点 | 返回值的个数都是无限的 | 返回值的个数都是无限的 |
不同点 | 返回多个值 | 返回一个值 |
二、yield表达式应用
def init(func): def wrapper(*args,**kwargs): g = func(*args,**kwargs) next(g) return g return wrapper @init def eater(): print('ready to eat') while true: food = yield print('get the food:%s,and start to eat'%food) g= eater() g.__next__() g.send('bone') g.send('milk') g.send('bread')
上一篇: 哪里盛产山竹?哪里产的山竹最好吃?
下一篇: 你知道家里做火锅用什么锅吗