Python之生成器
虽然生成器对象的使用方法与迭代器对象类似,但是内部原理是不同的 构建迭代器时,不是把所有元素一次性加载到内存,而是一种延迟计算的方式返回元素。 生成器就是一特殊迭代器,它不会把所有内容放在内存里,每次调用 next()函数时,返回的都是本次计算出来的那个元素,用完之后立刻销毁。 迭代器 可迭代协议 —— 含有 iter 方法的都是可迭代的 迭代器协议 —— 含有 next 和 iter 的都是迭代器 #生成器函数 def generator(): print(1) return 'a' ret = generator() print(ret) #只要含有 yield 关键字的函数都是生成器函数 #yield 不能和 return 共用且需要写在函数内 def generator(): print(1) yield 'a' #生成器函数 : 执行之后会得到一个生成器作为返回值 ret = generator() print(ret) print(ret.next()) 通过学习,知道了生成器表达式比列表推导式更不占用内存。 例如: 列表推导式: #列表推导式 print([i*i for i in r....