generator初探:
1.干嘛的:当有大量数据处理的时候,再去拿列表去存数据就太跟内存过不去了。generator可以一个一个的算,用一个生成一个,内存毫发无损,损失了运算
2.怎么用:讲一个简单的初级demo,这玩意儿回头实战再研究:
def yield_funct(n): for i in range(1,n): yield ff(i) print('testi====', i) def ff(i): return i *5 if __name__ == '__main__': for i in yield_func(15): print('namei=', i)
输出结果是
namei= 5
tetsi==== 1
namei= 10
tetsi==== 2
namei= 15
tetsi==== 3
namei= 20
tetsi==== 4
解释:在name中,用yield_func生成一个生成器(类似列表),这个生成器并没有实际像列表那样,而是用第几个生成第几个。于是在第一个的时候,生成了一个5,通过yield返回到name里,所有namei打印的是5,而testi为啥是1?因为在yield_func里,i指的是for中的i。实际上把这里的i写成非i即可容易区分,比如x
初步理解就这样