yield

  • 带有 yield 的函数在 Python 中被称之为 generator(生成器)
  • 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
  • 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。
def AIexReadlines():
    seek = 0
    while True:
        with open('D:/temp.txt') as f:
            f.seek(seek) #将文件指针向前移动seek个字节
            data = f.readline()
            if data:
                seek = f.tell()  #获取当前文件读取指针,第一次读取后,seek等于行末
                yield data
            else:
                return
#print AIexReadlines()            
for item in AIexReadlines():   #迭代
    print item 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容