`

python 生成器 generator

 
阅读更多
生成器(generator)

使用yield,可以让函数生成一个结果序列,而不仅仅是一个值

例如:
def countdown(n):
    print "counting down"
    while n>0:
        yield n  #生成一个n值
        n -=1

>>> c = countdown(5)
>>> c.next()
counting down
5
>>> c.next()
4
>>> c.next()
3


next()调用生成器函数一直运行到下一条yield语句为止,此时next()将返回值传递给yield.而且函数将暂停中止执行。再次调用时next()时,函数将继续执行yield之后的语句。次过程
持续执行到函数返回为止。

通常不会像上面那样手动调用next(), 而是使用for循环,例如:
>>> for i in countdown(5):
...     print i
...    
counting down
5
4
3
2
1




"""
next(), send()的返回值都是yield 后面的参数, send()跟next()的区别是send()是发送一个参数给(yield n)的表达式,作为其返回值给m, 而next()是发送一个None给(yield n)表达式, 这里需要区分的是,一个是调用next(),send()时候的返回值,一个是(yield n)的返回值,两者是不一样的.看输出结果可以区分。

"""
def h(n):
    while n>0:
        m = (yield n)
        print "m is "+str(m)
        n-=1
        print "n is "+str(n)


>>> p= h(5)
>>> p.next()
5
>>> p.next()
m is None
n is 4
4
>>> p.send("test")
m is test
n is 3
3


分享到:
评论

相关推荐

    Python生成器generator用法示例

    本文实例分析了Python生成器generator用法。分享给大家供大家参考,具体如下: 生成器generator本质是一个函数,它记住上一次在函数体中的位置,在生成器函数下一次调用,会自动找到该位置,局部变量都保持不变 l =...

    Python生成器generator原理及用法解析

    Python生成器generator简介 iteration, iterable, iterator 迭代(iteration):在python中迭代通常是通过for…in…来实现的.而且只要是可迭代对象iterable,都能进行迭代. 可迭代对象(iterable):Python中的任意的对象...

    python生成器generator用法实例分析

    主要介绍了python生成器generator用法,实例分析了python生成器的相关使用技巧,需要的朋友可以参考下

    Python生成器(Generator)详解

    主要介绍了Python生成器(Generator)详解,本文讲解了什么是生成器、简单生成器、带yield 语句的生成器、加强的生成器等内容,需要的朋友可以参考下

    浅谈Python生成器generator之next和send的运行流程(详解)

    下面小编就为大家带来一篇浅谈Python生成器generator之next和send的运行流程(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    python生成器(创建生成器,执行顺序,send方法)

    python生成器(generator):是一种特殊的迭代器,优势是可以在运行中途改变函数里的参数。 如何判断一个对象是否是一个生成器: from _collections_abc import generator list_num = (x for x in range(10)) print...

    python生成器和迭代器区别

    generator:一边生成一边计算后面元素的机制,称为生成器,生成器里面保存的是算法,只有需要用到才会计算后面的值 1.2 通过列表生成式创建生成器 我们可以将列表生成式的中括号改成小括号就创建了一个生成器 list ...

    python生成器用法实例详解

    本文实例讲述了python生成器用法。分享给大家供大家参考,具体如下: 1. 生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到...

    Python迭代器iterator生成器generator使用解析

    主要介绍了Python迭代器iterator生成器generator使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    彻底搞懂Python生成器推导式

    Python生成器推导式: 生成器推导式(generator expression)的用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square brackets)。 与列表...

    Python生成器函数

    生成器本质上也是一个迭代器,我的一点理解的话,它也有点像只能执行一轮的单链表,通过 obj.__next__()就获得了当前指针(并不是真的指针)的指向值,同时将将指针指向一下个,过程不可逆,最后一个元素执行完之后...

    NFT像素图片艺术品生成器源码-加密朋克CryptoPunks(Python)

    NFT加密朋克CryptoPunks像素图片生成器源码(Python) 使用说明: 1. 安装 Python (https://www.python.org/downloads/) 2. 安装 PIP curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py 3....

    api-key-generator:使用 Python 的简单 API 密钥生成器

    api-key-生成器使用 Python 的简单 API 密钥生成器开发环境操作系统:Windows 8.1 64 位工具: Python 2.7.9 MongoDB 3.0.2(从下载 64 位安装程序) pymongo ( pip install pymongo ) 参数解析吉特用法您可以将此...

    Python异步编程详解【305263】回顾多线程,多进程,生成器概念.zip

    CSDN网络课程的资源,视频连接为:https://edu.csdn.net/course/detail/25533 -课件.ppt -asyncio_test.py -test.py 文件

Global site tag (gtag.js) - Google Analytics