python 关键字yield解析
yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator。
yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力,比起用类的实例保存状态来计算下一个 next() 的值,不仅代码简洁,而且执行流程异常清晰# eg_v1 建立一个列表,逐项地读取这个列表,那么这个列表就是一个可迭代对象。
>>> mylist = [1,2,3,4,5]>>> for i in mylist:... print i... 12345
使用一个列表生成式来建立一个列表的时候,也是建立了一个可迭代的对象
>>> mylist = [x * x for x in range(5)]>>> for i in mylist:... print i... 014916
注:使用 for .. in .. 语法的叫做一个迭代器:列表,字符串,文件等,缺点是内存开销大
生成器生成器是可以迭代的,但是只可以读取它一次 ,因为它并不把所有的值放在内存中,它是实时地生成数据。>>> mygenerator = (x * x for x in range(5))>>> for i in mygenerator:... print i... 014916
yield关键字
yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器>>> def createGenerator():... mylist = range(5)... for i in mylist:... yield i * i... >>> >>> mygenerator = createGenerator()>>> print (mygenerator)>>> for i in mygenerator:... print i... 014916>>>
可以理解:当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象,使用for进行迭代的时候,执行函数内的代码