pythonyield理解

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

在别人的代码中看到yield这个关键字,看了几篇资料,说一下个人理解。

包含yield 关键字的函数成为一个迭代器,yield跟return的位置一样,只不过每次返回结果后,并没有退出,而是等待下一次迭代,下一次迭代开始后从yield后的语句开始执行,直到再次遇到yield,返回新一次的结果。

当然,不熟悉yield的同学可能也不太理解迭代器(比如我 ^^),因而用更通俗的话来说就是,如果一个函数(脚本)需要多次重复(循环)执行,并且每次循环的结果都是需要的,那么用yield代替return就可以了,举例如下:

>>> def fib(max):

... n,a,b=0,0,1

... while n <max:

... yield a

... a,b = b,a+b

... n += 1

>>> f1.next()

0

>>> f1.next()

1

>>> f1.next()

1

>>> f1.next()

2

>>> f1.next()

3

>>> f1.next()

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

StopIteration

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航