国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > 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学习网

关注

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

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

双男主做酱酱酿酿视频大全真人版 | 小雪被体育老师抱到仓库| 蜜桃来偷欢免费观看高清电视剧| 公交车NP粗暴H强J玩弄| 儿子日娘章节小说| 人犬兽人在线观看免费完整一| 蜜桃视频| 乳房| 欧美大片PPT免费PPT| 女人尝试到更粗大的心理变化 | 《灭火宝贝4》| 被老师摁着强进了好爽H漫画| 粗大挺进亲女小雅小滨| 真人刺激战场40分钟电视剧| 9.1芒果浏览器| 妈妈你真棒插曲最后接吻是谁| 《妻子6》在线观看免费版电视剧| 春咲あずみ| 《俄罗斯空姐2(俄罗斯航空)》| 欧美14-18处免费| 公日日躁我和公乱小说| GEGEPA| B站夫妻进入高峰期需要多久| 《丰满的女邻居》播放| 我在开会他在下添好爽在线视频 | 女朋友想放进去睡是什么心理 | 台湾《洞门为君开》演员表| 光溜溜女孩视频大全| 淫语....粗话....脏话小说| 《日本公与媳5》公妇伦| 扌击辶鬲的小说父女| 无风险9.1免费版观看| 公媳欢情沈曼最新章节更新| WWW.77.GOV.CN| 麻豆传媒在线观看| 粗大的蘑菇头刮得又红又肿怎么办 | B站暴躁姐的丈夫是干什么的| 《从上司到妻子》动画结局| 成都私人情侣免费看电视剧| 《合租男女》电视剧韩国| 少女たちよ观看免费高清电视剧