yield

作者: 转身为墙 | 来源:发表于2017-08-23 13:32 被阅读0次
    • 带有 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 
    

    相关文章

      网友评论

          本文标题:yield

          本文链接:https://www.haomeiwen.com/subject/nvfhdxtx.html