生成器的出现:
在我们使用循环时,会有一部分资源用不到,所以我们想要用多少便生成多少,解决资源优化问题
生成器就是一边循环一边计算的工具
上一个推导式就是生成器(yield),而不同就是将语法的中括号换为小括号
生成器的调用:
1.使用next()函数调用
2.使用_next_()调用
3.使用定义函数的方法调用(只要函数中有yield,那么就是生成器函数)
注:需要使用变量来接收(类似于返回值)
迭代:获取元素的一个过程
可迭代对象:简单的来讲就是可以被for循环遍历的对象,如列表、集合、元组、字典、字符串、生成器
如何判断一个对象是否是可迭代的:
使用isinstance()来检查一个对象是不是另一个对象的实例,是,则返回True,不是,就返回False
用法:isinstance(变量名,类型)
可迭代对象≠迭代器
可以被next()函数调用,并返回下一个值的对象称为迭代器(Iterator)
借助iter()函数将可迭代对象变成迭代器
iterable可迭代的,在使用是需要调入模块的
将指针移到这里,使用alt+回车键,选择collections.Iterable
生成器与迭代器关系:
1.生成器的出现原因:为优化资源使用问题,节省内存
生成器创建方式:推导式、yield函数
2.迭代器(可以使用next()函数),生成器可以转化为迭代器(生成器也属于迭代器)
3.部分可迭代对象不可以被next()函数调用,但可以通过iter()将其变成迭代器