分类
Python学习

Python关键字yield用法

(在苹果系统下,如果文章中的图片不能正常显示,请升级Safari浏览器到最新版本,或者使用Chrome、Firefox浏览器打开。)

我这篇文章将简单记录一下python关键字yield的用法。因为写代码需要,我看到了别人的部分代码中有用到yield关键字。作为习惯了C类语言的人,第一次看到这种关键字会感到很迷茫,不知道是用来做什么的,可是偏偏很多时候会用到这样的代码。

经过查找资料,我发现这应该是属于一种生成器。说到生成器,就不得不说到迭代。例如,一个数组、列表等,都是一个可以迭代的对象,可以使用for in循环去迭代。

         “当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象”。

查资料过程中,我阅读到一个这样的例子(见参考资料):

>>> mylist = [x*x for x in range(3)]
>>> for i in mylist :
...    print(i)
0
1
4

该例子中,mylist就是一个可迭代对象,只不过这没有使用到关键字yield。我们可以使用关键字yield专门建立一个这样的生成器,这样的生成器可以迭代,只不过它是实时地生成数据,而不是一次产生,而且每个数据只可以读取一次。这在很多情况下,会使得编程很方便。

yield关键字类似return的作用,只是这个函数的真正return返回值却是个生成器对象。

“当你调用这个函数的时候,函数内部的代码并不立马执行”。

我们使用下面这个例子来说明一下yield的作用吧。我们定义一个函数fun(),编写这样一个生成器,然后我们使用for in循环对该生成器对象迭代,每一次迭代就会获取一个值,直到再也没有值为止。

>>> def fun():
...  l=range(3)
...  for i in l:
...   yield i
...
>>> a=fun()
>>> for i in a:
...  print(i)
...
0
1
2
>>>

为了表示对我查到的资料的原作者的尊敬,更详细的教程或者其他用法,请直接查看参考资料链接。

 

参考资料:

http://pyzh.readthedocs.io/en/latest/the-python-yield-keyword-explained.html

 

版权声明
本博客的文章除特别说明外均为原创,本人版权所有。欢迎转载,转载请注明作者及来源链接,谢谢。
本文地址: https://blog.ailemon.net/2017/09/07/how-to-use-python-key-word-yiled/
All articles are under Attribution-NonCommercial-ShareAlike 4.0

关注“AI柠檬博客”微信公众号,及时获取你最需要的干货。


“Python关键字yield用法”上的2条回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

18 − 9 =

如果您是第一次在本站发布评论,内容将在博主审核后显示,请耐心等待