易截截图软件、单文件、免安装、纯绿色、仅160KB

[Python 学习]2.5版yield之学习心得

  shhgs 发布了关于《 Py 2.5 what's new 之 yield

之后,原来我不是特别关注 yield 的用法,因为对于2.3中加入的yield相对来说功能简单,它是作为一个 generator
不可缺少的一条语句,只要包含它的函数即是一个 generator 。但在2.3中,generator
不能重入,不能在运行过程中修改,不能引发异常,你要么是顺序调用,要么就创建一个新的 generator。而且 generator 中的
yield 只是一个语句。但到了 2.5 版之后,情况发生了很在的变化。
在 shhgs 的文章中对于 yield 并没有做太多的描述,也因此让我在理解上产生了许多问题,于是我仔细地研究了 What's new
和 PEP 342
文档,有了一些体会,描述在下面。
这里不说为什么要对 yield 进行修改,只说功能。
1. yield 成为了表达式,它不再是语句,但可以放在单独的行上。原文:
Redefine "yield" to be an expression, rather than a statement. The
current yield statement would become a yield expression whose value is
thrown away.
可以看到,如果你还是写成语句形式的话,其实还是一个表达式,只是它的值被扔掉了。
那么一个 yield 表达式可以这样写:
x = yield i
y = x + (yield x)
那么这种机制到底是如何工作的呢?在2.3版很容易理解,你完全可以把 yield 语句理解为一个 "return" 语句,只不过
"return" 完后,函数并不结束,而是断续运行,直到再次遇到 yield 语句。那么到了 2.5 版不仅仅是一个 "return"
语句那么简单了,让我们看完下面关于 send() 的说明再描述它吧。
2. 增加了 send(msg) 方法,因此你可以使用它向 generator 发送消息。原文:
Add a new send() method for generator-iterators, which resumes the
generator and "sends" a value that becomes the result of the current
yield-expression. The send() method returns the next value yielded by
the generator, or raises StopIteration if the generator exits without
yielding another value.
执行一个 send(msg) 会恢复 generator 的运行,然后发送的值将成为当前
yield 表达式的返回值
。然后 send() 会返回下一个被 generator yield 的值,如果没有下一个可以 yield 的值则引发一个异常。
那么可以看过这其实包含了一次运行,从将msg赋给当前被停住的 yield 表达式开始,到下一个 yield 语句结束,然后返回下


相关文档:

Python中的对象、变量及引用

  在Python中,我们执行表达式 a = 3,Python会怎样操作呢?
1、首先会创建一个对象表示值3
2、如果变量a不存在,创建变量a
3、把变量a连接到表示3的对象
在Python中,变量和对象存储在不同的地方,通过指针连接起来...
一个变量总是和对象连接起来,不存在不和对象连接的变量,但是大的对象可能连接到别的对象。 ......

python如何连接MySQL数据库

 
#!/usr/bin/env python
# -*-coding:UTF-8-*-#这一句告诉python用UTF-8编码
#=========================================================================
#
# NAME: Python MySQL test
#
# AUTHOR: benyur
# DATE  : 2004-12-28
#
# COMMENT: 这是一个python连接mysql的例子
#
#================ ......

python快捷键汇集


Ctrl+3            行注释
Ctr+\               去行注释
Ctrl+Shift+3   去行注释
Ctrl+4            块注释
Ctrl+5         & ......

python pyc

 什么是pyc文件
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2 ......

Python扩展和嵌入

1.Python的扩展
Python扩展是指运用其他语言编写某些功能模块,供Python程序调用,常用的有Python的C扩展和C++扩展。Python扩展的目的主要有两个:一是为了功能需要,另外一个原因是为了性能需要。下面介绍一下在不运用工具的情况下,运用C和C++语言对Python进行扩展的步骤。
扩展的第一步是用C或C++创建一个源程序,然后 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号