#转自https://www.jianshu.com/c/00c61372c46a网址 #生成器也是函数,只是常规函数通过return返回一个值,而生成器可以通过yield返回很多中间结果。 def mygen(): yield 'hello' a = 10 + 20 yield a yield [1, 2, 3] if __name__ == '__main__': m = mygen() for i in m: print(i) for i in m: print(i) # 无值,因为生成器对象只能用一次 #生成器实例:每次取出文件的10行内容 def blocks(fobj): block = [] counter = 0 for line in fobj: block.append(line) counter += 1 if counter == 10: yield block # 返回中间结果,下次取值,从这里继续向下执行 block = [] counter = 0 if block: # 文件最后不够10行的部分 yield block if __name__ == '__main__': fobj = open('/tmp/passwd') # cp /etc/passwd /tmp for lines in blocks(fobj): print(lines) print() fobj.close()
python-生成器(67)
最新推荐文章于 2024-01-16 15:55:38 发布