Python生成器

生成器的使用:

生成器--廖雪峰的网站 中提到:最难理解的就是generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。

其实,理解生成器的yield关键在于:yield的作用与return类似,yield a语句会返回一个a给生成器调用者,然后不再执行后面的代码,等到下次再次调用生成器函数时,再接着上次返回的位置继续执行,然后再次止步于yield a

自己写的用于读取文件的生成器函数 readLimitedCSV

#encoding:utf-8

def readTxt():
    with open('../data/doc.txt','r',encoding='utf-8') as f:
        for line in f.readlines():
            print(line)
    
def readLimitedCSV(rows=5):
    with open('../data/actor.csv','r',encoding='utf-8') as f:
        for i in range(rows):
            yield f.readline()

def save():
    with open('../data/result.csv','w') as f:
        for i in readLimitedCSV():
            f.write(i)

if __name__=='__main__':
    save()
    print("我爱中国")
    a,b,c=3,4,5
    a,b,c=a+b,b+c,a+c
    print(a,b,c)

 

posted @ 2018-06-22 20:57  morein2008  阅读(128)  评论(0编辑  收藏  举报