Python中yield解析

小探yield

查看 python yield 文档

yield expressions:
Using a yield expression in a function’s body causes that function to be a generator
can only be used in the body of a function definition

翻译成人话就是:
使用yield表达式会将函数体变成生成器,而且只能在函数定义的主体中使用。

迭代对象

我一般使用的 for * in array(list, string,file) 。这些都是可迭代对象
这样的方法 所有的数据都在内存中,如果数据量特别大的时候,会消耗大量的内存

就像在python2常使用 for i in xrange(num) 来代替 for i in range(num)

yield类似于return关键字,yield函数会生成一个generator。

  • 特点:迭代一次遇到yield时返回yield后面(右边)的值,下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。

生成器generator也是可以进行迭代,但是只能读取一次,它并不把所有的值都放在内存中,实时地生成数据。

使用方法是重复调用next()方法,直至catch一个异常error

yield运行

一个实例

>>> def createGenerator() :
...    mylist = range(3)
...    for i in mylist :
...        yield i*i
...
>>> mygenerator = createGenerator() # create a generator
>>> print(mygenerator) # mygenerator is an object!
<generator object createGenerator at 0xb7555c34>
>>> for i in mygenerator:
...     print(i)
0
1
4

当你调用这个函数的时候,函数内部的代码并不是立即执行。函数只返回一个生成器对象。当使用for进行迭代的时候,函数内部的代码执行。

python yield 参考链接

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
07-02 13:50
闽江学院 Java
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 12:20
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务