- 浏览: 498812 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (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 6129oin的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做 ... -
python中read() readline()以及readlines()用法
2014-06-23 15:47 1107http://www.cnblogs.com/qi09/a ... -
Python的垃圾回收机制
2014-06-20 17:01 1029http://blog.csdn.net/carolzha ... -
nohup python xx.py & 无输出信息
2014-03-04 23:23 1538python默认的print输出stdout是开启了buff ... -
python 获得一个月有多少天
2014-02-25 18:54 798在python的datetime模块中没有一个月有多少天的方 ... -
python json 中文 乱码
2014-02-21 14:31 1731ython的json.dumps方法默认会输出成这种格式&q ... -
error: byte-compiling is disabled.
2014-01-25 09:48 1529yum install gcc python-devel -
【转】centos python pip安装
2014-01-25 09:31 959http://heipark.iteye.com/blog ... -
python 的日志logging模块学习
2014-01-21 10:34 712http://www.cnblogs.com/dkblog/a ... -
logging.conf 理解
2014-01-20 21:15 745#基本上格式可以这么看,先定义用到的logger,hand ... -
[转】Python日志输出——logging模块
2014-01-20 20:07 1022http://blog.csdn.net/chosen0ne ... -
python时间和时间戳之间的转换
2014-01-20 13:43 9171)例如格式2012-07-31 00:01:18,根据该时 ... -
centos下更新Python版本的步骤
2014-01-18 19:00 899安装完CentOS5.9(Final)后,执行#Python ... -
Installing mysql-python on Centos
2014-01-16 19:27 754yum install MySQL-python -
pymongo 中文乱码问题
2014-01-08 20:32 6192原文地址: http://windkeepblow.bl ... -
TypeError: cannot save object of type <type 'str'>
2014-01-08 20:06 1114pymongo的save方法传入的值不是字典类型 -
VIM python 自动补全插件:pydiction
2014-01-03 23:02 915http://www.pythonclub.org/lin ... -
yum出现“No module named yum”错误解决方法
2013-12-22 16:29 19386安装了一个Python2.7,隔天发现yum无法使用,报错信 ... -
wsgi详解
2013-12-18 13:46 954http://blog.csdn.net/sraing/ar ... -
linux安装python2.7碰到问题
2013-12-17 15:13 3348centos 默认是2.4版本的python,重新安装py ...
相关推荐
Python生成器generator简介 iteration, iterable, iterator 迭代(iteration):在python中迭代通常是通过for…in…来实现的.而且只要是可迭代对象iterable,都能进行迭代. 可迭代对象(iterable):Python中的任意的对象...
本文实例分析了Python生成器generator用法。分享给大家供大家参考,具体如下: 生成器generator本质是一个函数,它记住上一次在函数体中的位置,在生成器函数下一次调用,会自动找到该位置,局部变量都保持不变 l =...
在描述中提到的是David Beazley所作的关于Python生成器的系统编程演示文稿,他曾在PyCon UK 2008上进行过该主题的讲解。此外,还强调了生成器在系统编程中的实用性,包括文件操作、文件系统、解析、网络编程和多线程...
本文实例讲述了python生成器generator用法。分享给大家供大家参考。具体如下: 使用yield,可以让函数生成一个结果序列,而不仅仅是一个值 例如: def countdown(n): print counting down while n>0: yield n #...
Python生成器,或称Generator,是一种特殊的迭代器,它的特点是其内部使用了`yield`语句,这使得生成器能够记住执行状态,并在下次调用时恢复。生成器的优势在于它们能够在运行时按需生成数据,而不是一次性生成所有...
### Python生成器generator之next和send的运行流程详解 #### 一、生成器的基本概念 在Python中,生成器是一种特殊的迭代器,它允许暂停和恢复函数的执行状态。生成器通过`yield`关键字实现这一功能,使得函数可以...
总的来说,`generator3-0.0.7-py3-none-any.whl` 是一个专注于生成器功能的Python库,它为开发者提供了扩展Python生成器能力的工具,帮助他们在处理序列数据或进行高效异步编程时更加得心应手。安装和使用这样的库,...
一类是 generator,包括生成器和带 yield 的 generator function。 我们把这些可以直接作用于 for 循环的对象统称为可迭代对象:Iterable 。 像生成器这样,不但可以作用于 for 循环,还可以被 next() 函数不断...
基于标签"sound frequency python generator",我们可以推断出这个项目的核心是利用Python编程语言来创建一个声音频率生成器。Python因其易读性和丰富的音频处理库(如pydub, wave, audioread等)而常被用于此类任务...
在 Python 中,生成器(generator)是一种特殊的可迭代对象,它可以在循环中动态地计算和生成元素,而不需要事先创建一个完整的列表。这种机制可以大大节省内存空间,提高程序的效率。 什么是生成器? ------------...
本文将深入探讨Python中的异步编程概念,包括回顾多线程、多进程以及生成器,并结合提供的课件和代码示例进行详细解释。 首先,多线程是并发执行任务的一种方式。在Python中,`threading`模块提供了创建和管理线程...
然而,这个项目为学习音频处理和Python生成器提供了一个很好的实践案例,同时也展示了如何利用Python的科学计算库来创建复杂的声音效果。对于有兴趣在数字音频领域工作或学习的人来说,这是一个值得研究的项目。
在Python编程语言中,生成器(Generator)和迭代器(Iterator)是两种非常重要的概念,它们主要用于处理大量数据或无限序列,以节省内存资源。理解它们的区别和使用方式对于高效编程至关重要。 一、生成器 1.1 ...
在Python编程语言中,生成器(Generator)是一种特殊的迭代器,它通过`yield`语句实现,能够让我们在运行时动态地生成序列,而无需一次性将所有数据存储在内存中。这种方式大大节省了内存资源,尤其对于处理大量数据...