python学习笔记之基础操作(六)生成器和迭代器

版权声明:所有资料资源均应用作教育用途,请勿用作商业用途 https://blog.csdn.net/qq_38876114/article/details/83210714

生成器总结

  • 语法上和函数类似:生成器函数几乎和常规函数一样,不同的又两点,
    第一点是返回使用yield关键字,第二点是在连续逻辑内可以多次返回
    这是yield的特点决定的,yield会记住函数执行的位置,下一次调用next函数时会自动从上次返回的位置开始继续执行,因此生成器是无法倒推的。
#生成器函数实例
def test():
	for i in range(10):
		yield i*100
g = test()
for i in range(11):
	print(g._next_())

  • 自动实现迭代协议,上述_next_()函数时自动实现的,不需要手动编写,但
    是需要对生成器函数结束时的异常进行处理,当然,for循环等常见python方法中已经处理了
  • 优点:延迟计算,并且进行实时计算的数据传输,例如上面的例子,我们不 需要计算所有的乘积之后在统一返回一个数组,而是计算一个值就可以返回一个值
#列表生成的方法,需要保存一个巨大的列表,内存大
sum([i for i in range(1000000)])   
#生成器方法,实时传输数据,内存非常小
sum(i for i in range(1000000))

猜你喜欢

转载自blog.csdn.net/qq_38876114/article/details/83210714