一、迭代器
- 什么是迭代器?
- 迭代器是一种纵向的容器型数据。与列表、字典等序列型数据不同的是,无法获得序列的长度或指定元素的值。
- 只出不进。只要知道了迭代器中的元素就意味着元素被读取,也就是从迭代器中取了出来。
- 创建迭代器?
- 通过关键字iter(序列型数据)。任何序列型数据都可以转换成迭代器。
- 通过生成器创建。
- 读取迭代器?
- 通过next(迭代器),来获取。
- 通过遍历。
- 如果迭代器中没有数据,如果在进行读取操作,则会报错。StopIteration 。
- 如果对迭代器进行类型转换,如list(迭代器),则迭代器也会变为空。
二、生成器
- 什么是生成器?
- 数据生产者。定义函数的时候通过关键字yield作为标记,yield 后面的数据即为生成器中的数据,yield的个数即为迭代器中数据的数量。
- yield可以放在任何位置。带有yield的函数再调用时不会执行,只有再获取其中数据的时候才会执行。
- 执行到yield的时候程序则会停止。将数据返回,并同时记录程序运行位置。下一次调用的时候继续运行。
- 创建生成器?
- 通过关键字yield
- 通常会和循环一起使用
- 数据的获取?
- 和迭代器的获取方式一样。
- 用的时候再去获取,可以大大节省内存空间,对数据分析非常友好。
- python的三大神器:装饰器、迭代器、生成器。
三、虚拟空间
- 虚拟空间的存在是便于进行第三方库的管理。
- 安装python的时候,会安装解释器和系统库。
- 针对不同类型的项目会安装不同的第三方库。为了防止第三方库的杂乱,所以有必要开辟虚拟空间。
- 开辟虚拟空间的时候,会自动复制装饰器和系统库。