python生成器


#python生成器函数的第一次理解,后面会进行更正和补充

#@author :hellyou

#qq:1764681289 欢迎交流

def gene():

    for i in range(20):

        result = yield i

        print(result)

a = gene()

print(next(a))

print(next(a))

print(a.send("brt"))

"""F:\py\python.exe C:/Users/hp/PycharmProjects/untitled1/test.py

0

None

1

brt

2"""

def gene():

    for i in range(20):

        result =  yield 8

        print(result)

a=gene()

print(next(a))

print(next(a))

print(a.send("brt"))

"""F:\py\python.exe C:/Users/hp/PycharmProjects/untitled1/test.py

8

None

8

brt

8"""

"""比较结果,大体说明一下生成器函数的调用过程。

0、我们认为,x = yield a 分两步完成,第一步输出a,挂起;第二步,send()传入参数给yield sth,作为yield sth的返回值 ,返回给x

1、a=gene()获得了一个生成器对象,但此时函数并没有执行

2、执行函数体,到第一个yield,此时,输出yield后面的内容,并挂起,保存状态。

3、当再一次使用next()方法时,函数从上次挂起的状态继续执行,next()方法不传入参数给yield sth (等效于传入none),则(yield sth) 为none,则result为none,继续执行函数

4、到下一次yield的时候,输出yield后面的内容,挂起,继而重复步骤"""


我的博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者:邵正将 来源:PytLab 在python中生成器可以很方便的实现迭代协议。生成器通过生成器函数产生,生成器...
    PyChina阅读 1,586评论 0 6
  • 第一部分 在掌握python生成器之前,你需要理解普通的python函数是如何工作的。通常,当一个python函数...
    treelake阅读 1,471评论 2 9
  • 1.什么是生成器 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一...
    一只写程序的猿阅读 953评论 0 4
  • Python列表生成式 列表推导式的一般语法 这种语法等价于以下代码 下面举一些列表推导式的栗子: Python中...
    So_ProbuING阅读 1,302评论 0 0
  • 当你徘徊在十字路口 也许你很彷徨 也许你很孤独 应该如何选择 是选择过去 还是选择将来 你不知道 但你必须选择 选...
    若芷幽兰阅读 219评论 0 0