- 浏览: 484283 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (335)
- VM (2)
- python 基础 (78)
- C (7)
- php (38)
- django (8)
- c++ (1)
- python 服务端编程 (21)
- ubuntu (1)
- linux (26)
- mysql (24)
- 缓存管理 (5)
- nginx (4)
- linux 命令行 (16)
- web (8)
- javascript (8)
- python 模块 (3)
- java (6)
- 面试题 (2)
- tornado (1)
- 运维 (10)
- 网络编程 (0)
- svn (5)
- css (1)
- mongodb (3)
- vim (8)
- infobright (1)
- shell (1)
- 算法 (2)
- redis (1)
最新评论
生成器(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
使用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中threading模块的join函数
2014-06-27 13:39 6080oin的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做 ... -
python中read() readline()以及readlines()用法
2014-06-23 15:47 1076http://www.cnblogs.com/qi09/a ... -
Python的垃圾回收机制
2014-06-20 17:01 987http://blog.csdn.net/carolzha ... -
nohup python xx.py & 无输出信息
2014-03-04 23:23 1496python默认的print输出stdout是开启了buff ... -
python 获得一个月有多少天
2014-02-25 18:54 756在python的datetime模块中没有一个月有多少天的方 ... -
python json 中文 乱码
2014-02-21 14:31 1697ython的json.dumps方法默认会输出成这种格式&q ... -
error: byte-compiling is disabled.
2014-01-25 09:48 1484yum install gcc python-devel -
【转】centos python pip安装
2014-01-25 09:31 920http://heipark.iteye.com/blog ... -
python 的日志logging模块学习
2014-01-21 10:34 680http://www.cnblogs.com/dkblog/a ... -
logging.conf 理解
2014-01-20 21:15 697#基本上格式可以这么看,先定义用到的logger,hand ... -
[转】Python日志输出——logging模块
2014-01-20 20:07 968http://blog.csdn.net/chosen0ne ... -
python时间和时间戳之间的转换
2014-01-20 13:43 8871)例如格式2012-07-31 00:01:18,根据该时 ... -
centos下更新Python版本的步骤
2014-01-18 19:00 862安装完CentOS5.9(Final)后,执行#Python ... -
Installing mysql-python on Centos
2014-01-16 19:27 711yum install MySQL-python -
pymongo 中文乱码问题
2014-01-08 20:32 6150原文地址: http://windkeepblow.bl ... -
TypeError: cannot save object of type <type 'str'>
2014-01-08 20:06 1070pymongo的save方法传入的值不是字典类型 -
VIM python 自动补全插件:pydiction
2014-01-03 23:02 879http://www.pythonclub.org/lin ... -
yum出现“No module named yum”错误解决方法
2013-12-22 16:29 19338安装了一个Python2.7,隔天发现yum无法使用,报错信 ... -
wsgi详解
2013-12-18 13:46 901http://blog.csdn.net/sraing/ar ... -
linux安装python2.7碰到问题
2013-12-17 15:13 3236centos 默认是2.4版本的python,重新安装py ...
相关推荐
本文实例分析了Python生成器generator用法。分享给大家供大家参考,具体如下: 生成器generator本质是一个函数,它记住上一次在函数体中的位置,在生成器函数下一次调用,会自动找到该位置,局部变量都保持不变 l =...
Python生成器generator简介 iteration, iterable, iterator 迭代(iteration):在python中迭代通常是通过for…in…来实现的.而且只要是可迭代对象iterable,都能进行迭代. 可迭代对象(iterable):Python中的任意的对象...
主要介绍了python生成器generator用法,实例分析了python生成器的相关使用技巧,需要的朋友可以参考下
主要介绍了Python生成器(Generator)详解,本文讲解了什么是生成器、简单生成器、带yield 语句的生成器、加强的生成器等内容,需要的朋友可以参考下
下面小编就为大家带来一篇浅谈Python生成器generator之next和send的运行流程(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
python生成器(generator):是一种特殊的迭代器,优势是可以在运行中途改变函数里的参数。 如何判断一个对象是否是一个生成器: from _collections_abc import generator list_num = (x for x in range(10)) print...
generator:一边生成一边计算后面元素的机制,称为生成器,生成器里面保存的是算法,只有需要用到才会计算后面的值 1.2 通过列表生成式创建生成器 我们可以将列表生成式的中括号改成小括号就创建了一个生成器 list ...
本文实例讲述了python生成器用法。分享给大家供大家参考,具体如下: 1. 生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到...
主要介绍了Python迭代器iterator生成器generator使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Python生成器推导式: 生成器推导式(generator expression)的用法与列表推导式非常相似,在形式上生成器推导式使用圆括号(parentheses)作为定界符,而不是列表推导式所使用的方括号(square brackets)。 与列表...
生成器本质上也是一个迭代器,我的一点理解的话,它也有点像只能执行一轮的单链表,通过 obj.__next__()就获得了当前指针(并不是真的指针)的指向值,同时将将指针指向一下个,过程不可逆,最后一个元素执行完之后...
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-生成器使用 Python 的简单 API 密钥生成器开发环境操作系统:Windows 8.1 64 位工具: Python 2.7.9 MongoDB 3.0.2(从下载 64 位安装程序) pymongo ( pip install pymongo ) 参数解析吉特用法您可以将此...
CSDN网络课程的资源,视频连接为:https://edu.csdn.net/course/detail/25533 -课件.ppt -asyncio_test.py -test.py 文件