思考背景:使用python的时候,如果你生成了一个很大很大很长很长的列表或者字典,它们在python运行的会很占内存空间。我们可能在使用列表的第一个元素的时候,根本就不需要先把后面的第12345个元素也生成出来放在内存里面。我们只需要在使用到第12345个元素的时候再将这个元素生成出来就好了,所以也就有了今天的主角,yield
第一层理解,你把它当成是return,
第二层理解,你通过遍历return回来的对象,可以逐一地获得这些元素。
请看下面例子,如果你要打印0到9999999个数字,你可能会这么写
listsnum = range(0, 999999999)
for i in listsnum:
print(i)
low ,是不是这种感觉,而且在你程序运行地时候,listsnum这个变量一直占用你很多内存空间,
使用上yield之后的代码
def nums():
for i in range(0, 9999):
yield i
hjx_gen = nums() # 生成生成器实例对象
for m in hjx_gen: # 遍历该对象即可取出你所生成的元素
print(m)
这样就可以做到按需提取啦
每天记录一点点,每天成长一点点,坚持到所有人放弃