韩漫免费漫画在线观看方法,《好好疼爱里面》免费看,年轻漂亮的女士护士内衣,妈妈醉酒后把我当爸爸电视剧

文章 > Python常见问题 > python生成器如何实现

python生成器如何实现

头像

silencement

2019-10-26 13:43:103295浏览 · 0收藏 · 0评论

生成器和迭代器的功能非常相似,它也会提供 __next__() 方法,这意味着程序同样可调用内置的 next() 函数来获取生成器的下一个值,也可使用 for 循环来遍历生成器。

生成器与迭代器的区别在于,迭代器通常是先定义一个迭代器类,然后通过创建实例来创建迭代器;而生成器则是先定义一个包含 yield 语句的函数,然后通过调用该函数来创建生成器。

生成器是一种非常优秀的语法,Python 使用生成器可以让程序变得很优雅。

创建生成器

创建生成器需要两步操作:

定义一个包含 yield 语句的函数。

调用第 1 步创建的函数得到生成器。

下面程序使用生成器来定义一个差值递增的数列。程序先定义了一个包含 yield 语句的函数:

def test(val, step):
    print("--------函数开始执行------")
    cur = 0
    # 遍历0~val
    for i in range(val):
        # cur添加i*step
        cur += i * step
        yield cur

生成器的方法

当生成器运行起来之后,开发者还可以为生成器提供值,通过这种方式让生成器与“外部程序”动态地交换数据。

为了实现生成器与“外部程序” 动态地交换数据,需要借助于生成器的 send() 方法,该方法的功能与前面示例中所使用的 next() 函数的功能非常相似,它们都用于获取生成器所生成的下一个值,并将生成器“冻结”在 yield 语句处;但 send() 方法可以接收一个参数,该参数值会被发送给生成器函数。

在生成器函数内部,程序可通过 yield 表达式来获取 send() 方法所发送的值,这意味着此时程序应该使用一个变量来接收 yield 语句的值。如果程序依然使用 next() 函数来获取生成器所生成的下一个值,那么 yield 语句返回 None。

对于上面详细的描述,归纳起来就是两句话:

外部程序通过 send() 方法发送数据。
生成器函数使用 yield 语句接收收据。

更多的学习内容,请点击Python学习网

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

校服| 在线观看免费观看在线NBA | 美国大片免费观看2022年上映| 《火车服务》免费观看| 坤坤寒入桃子里电视剧| 《如狼似虎的女人》大结局| 保姆的特殊待遇5| 《酒店激战》动漫1-5集免费观...| 轮流和两个男人一起很容易染病吗| 荷兰日B赛现场视频| 老公把舌头放进我B里搅拌| 生殖瑜伽| 穿真空短裙挤公交会被赶走吗| B站禁止转播404入口| EXO妈妈MV高清在线观看 | 男人把因因放到女人因困里视频| 第1章品尝朋友娇妻| 公在厨房撕开奶罩吸奶头| 《厨房激战5》完整版在线观看| 洞洞饿了1-36集全免费| 大叔与妹妹免费观看电视剧高清 | 打扑克| 无风险9.1免费版观看| | 爸老师在线观看免费播放电视剧 | 《厨房激战5》完整版在线观看| 里番| 免费的黄冈网站有哪些平台| 善良的公与媳HD中文| 哈尼克孜| 《完美邻居2》电影在线观看 | 公交车上荫蒂添的好舒服H漫画 | 男人吸吮完乳房应该怎么处理 | 黑人空乘伦理5| 火车上荫蒂添的好舒服图片| 人狗大战2免费观看正版| 《酒店激战》动漫1-5集免费观.. 《帐篷里的秘密》动漫 | 饭桌上张开腿给公| 免费的行情网站WWW下载大全| 孤男寡女免费观看高清电视剧狂飙| 美国大片又大又好看的PPT