|
|
|
|
 yield 语句是什么含义? - alula [ 2005-01-25 15:20 | 156 byte(s)]
 Re: yield 语句是什么含义? - limodou [ 2005-01-25 21:10 | 370 byte(s)]
 Re: yield 语句是什么含义? - alula [ 2005-01-26 09:19 | 1,848 byte(s)]
 Re: yield 语句是什么含义? - passworld [ 2005-01-26 15:26 | 247 byte(s)]
 Re: yield 语句是什么含义? - limodou [ 2005-01-26 11:03 | 34 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
在python代码中,看到如下语句,不知道yield含义,谢谢指教:
......
thread.start()
yield None
.........
|
|
|
----
三点一面
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
谢谢limodou~
这个语言特性好特别,在其它编程语言似乎找不到与它相对应的了。
6.8 The yield statement
yield_stmt ::= "yield" expression_list
Download entire grammar as text.
The yield statement is only used when defining a generator function, and is only used in the body of the generator function. Using a yield statement in a function definition is sufficient to cause that definition to create a generator function instead of a normal function.
When a generator function is called, it returns an iterator known as a generator iterator, or more commonly, a generator. The body of the generator function is executed by calling the generator's next() method repeatedly until it raises an exception.
When a yield statement is executed, the state of the generator is frozen and the value of expression_list is returned to next()'s caller. By ``frozen'' we mean that all local state is retained, including the current bindings of local variables, the instruction pointer, and the internal evaluation stack: enough information is saved so that the next time next() is invoked, the function can proceed exactly as if the yield statement were just another external call.
The yield statement is not allowed in the try clause of a try ... finally construct. The difficulty is that there's no guarantee the generator will ever be resumed, hence no guarantee that the finally block will ever get executed.
Note: In Python 2.2, the yield statement is only allowed when the generators feature has been enabled. It will always be enabled in Python 2.3. This __future__ import statment can be used to enable the feature:
from __future__ import generators
|
|
|
----
三点一面
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
也叫 coroutine ,非常有用,在很多情况下可以实现多线程的效果但
是没有多线程的竞赛问题,但在其他很多地方无法替代多线程。感觉上
是一个cooperative multithreading,合作式多线程?
在比较丰富的语言里是有的。
|
|
|
[Original]
[Print]
[Top]
|
|
|