Python 官方文档:入门教程 => 点击学习
python中怎么实现一个生成器函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.生成器在 Python 中,一边循环一边计算的机制,称为生成器(Generator);生成
python中怎么实现一个生成器函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
在 Python 中,一边循环一边计算的机制,称为生成器(Generator);
生成器是一个返回迭代器的函数,只能用于迭代操作;
生成器是Python中的一个对象,对这个对象进行操作,可以依次生产出按生成器内部运算产生的数据;
生成器函数指的是函数体中包含yield关键字的函数(yield就是专门给生成器用的return);
生成器可以通过生成器表达式和生成器函数获取到;
def add(): for i in range(10): yield ig = add()print(g) # <generator object add at 0x10f6110f8>print(next(g)) # 0print(next(g)) # 1
我们可以通过yield关键字来定义一个生成器函数,这个生成器函数返回值就是一个生成器对象;
def gen(): print('111111') yield '111111' print('222222') yield '222222' print('333333') yield '333333'g = gen()print(g) # <generator object gen at 0x0026BBF0>next(g) # 111111next(g) # 222222next(g) # 333333next(g, 'over')
生成器函数可以使用next()迭代,且每次next()只会返回一次yield的值,然后暂停,下次一次next()时会在当前位置继续,如果没有元素可以迭代了,还 执在行next()则需要给定一个默认值,不给默认值会报错;
如果在生成器函数中使用return,则会终止迭代,且不能得到返回值;
def gen(): print('111111') yield '111111' print('222222') return '222222' print('333333') yield '333333'g = gen()print(g) # <generator object gen at 0x0026BBF0>next(g) # 111111next(g) # 222222, 抛出异常
# 死循环def way(): i = 0 while True: i += 1 yield ic = way()print(next(c)) # 1print(next(c)) # 2print(next(c)) # 3print(next(c)) # 4print(next(c)) # 5
在生成器中使用死循环,不会一直执行,仍旧是执行多少次next(),返回多少个值;
# 普通生成器函数way1def way1(): for i in range(5): yield i# 带语法糖的生成器函数way2def way2(): yield from range(5)#循环输出way1for i in way1(): print(i) #0 1 2 3 4#循环输出way2for j in way2(): print(j) #0 1 2 3 4
语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更“甜蜜”的语法;
语法糖给程序员提供了更实用的编码方式,有益于更好的编码风格,更易读;
生成器的语法糖也就是生成器的一种语法,作用是使代码更加简洁;
看完上述内容,你们掌握Python中怎么实现一个生成器函数的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网Python频道,感谢各位的阅读!
--结束END--
本文标题: Python中怎么实现一个生成器函数
本文链接: https://lsjlt.com/news/229443.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0