关于Python中的yield的理解

Posted 12james

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Python中的yield的理解相关的知识,希望对你有一定的参考价值。

生成器:yield表达式构成的函数就是生成器;每一个生成器都是一个迭代器(但是迭代器不一定是生成器)。return就是迭代器;

 

yield的功能类似于return,不同之处在于它返回的是生成器

什么是生成器,你可以通俗的认为,在一个函数中,使用了yield来代替return的位置的函数,就是生成器。

它不同于函数的使用方法是:函数使用return来进行返回值,每调用一次,返回一个新加工好的数据返回给你;yield不同,它会在调用生成器的时候,把数据生成object,然后当你需要用的时候,要用next()方法来取,同时不可逆。

def test():
   for i in range(1,10):
yield i        #装入

ob = test()      #generator 类型
print next(ob)  #1 释放的第一个装入的数据,(先入先出)
print next(ob)  #2
print next(ob)  #3
print next(ob)  #4

 

return:return可以终止函数的执行,也可以返回函数加工的数据,但是需要把数据存入内存中;return之后后面的将不再执行;

 yield:不会将所有数据取出来存入内存中;而是返回了一个对象;可以通过对象获取数据;用多少取多少,可以节省内容空间。除了能返回一个值,还不会终止循环的运行;

以上是关于关于Python中的yield的理解的主要内容,如果未能解决你的问题,请参考以下文章

关于Python中的yield

关于生成器---(yield)

yield的作用理解

关于Python中的yield

Python yield用法浅析(stackoverflow)

Python:lambda表达式和yield关键字理解与使用讲解