迭代器
迭代器介绍
- 迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复都是基于上一次结果而来迭代提供了一种通用的不依赖索引的迭代取值方式;
- 可迭代对象(用for循环遍历的对象都是可迭代对象)
- str, list, tuple, dict, set等都是可迭代对象;
- generator(生成器和yield的生成器函数)也是可迭代对象
- 判断是否可迭代
- 是否有内置的_iter_方法;
- isinstance(obj, lterable)
- 判断是否可迭代的方法(ininstance)
迭代器
可迭代的对象不一定是迭代器
- 有内置的_iter_()方法的对象,执行迭代器的_iter_()方法得到的依然是迭代器本身;
- 有内置的_next_()方法的对象,执行该方法可以不依赖索引取值;
迭代器iter()
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。那我们可以通过iter()方法将可迭代的对象,转为迭代器。
- 注意
- 迭代器不可以通过下标取值;
- 必须使用_next_()或者next()方法;
- 超出范围则直接报错Stoplteration;
- next()只能顺延调用,不能往前;
- 迭代器取值方法__next__
- 可迭代对象与迭代器的区别
- 可用于for循环的都是可迭代类型;
- 作用于next()都是迭代器类型;
- list, dict, str等都是可迭代的,但不是迭代器,因为next()函数无法调用他们。可以通过iter()函数将它们转为迭代器;
- python的for循环本质就是通过不断调用next()函数实现的;
生成器
生成器定义
- 在Python中,一边循环一边计算的机制,称为生成器:generator;
- 生成器就是在循环的过程中根据算法不断推算出后续的元素,这样就不用创建整个完整的列表,从而节省空间;
生成器的创建
- 生成器的表达式来源于迭代和列表解析的组合,生成器和列表解析类似,但是它使用 () 而不是 [];
- (ele_exp for element in iterable)
生成器函数(yield)
- 当一个函数中包含yield关键字,那么这个函数就是一个generator;
- 调用函数就是创建了一个生成器对象。其工作原理就是通过重复调用next()或者_next_()方法,直到捕获一个异常;
- 注意:
- yield返回一个值,并且记住这个返回值的位置;
- 下次遇到next()调用时,代码从yield的下一条语句开始执行;
- 与return的差别是,return也是返回一个值,但是直接结束函数;
- send()和next()一样,都能让生成器继续王下一步走(遇到yield返回),但send()能传一个值,这个值作为yield表达式整体的结果;
迭代器与生成器
- 生成器能做到迭代器能做的所有事;
- 因为生成器自动创建了iter()和next()方法,生成器简洁高效;
面对对象编程
面对对象编程介绍
Object Oriented Programming,简称OOP,是一种程序设计思想。
- 面向过程与面向对象的区别:
- 面向过程:根据业务逻辑从上到下写代码;
- 面向对象:将数据与函数绑定到一起,进行封装。减少重复代码的重写过程;
类的构成
- 类由3个部分构成
- 类的名称:类名;
- 类的属性:一组数据;
- 类的方法:允许对类进行操作的方法;
- python使用class来定义 --> class MyClass:
- python使用已经定义的类创建一个个对象 --> obj_name = MyClass()
self 参数方法
- self本身就是形参;
- self就是对象本身;
init() 方法
init()方法称为初始化方法,或构造法,创建对象时,会自动执行该方法,为对象的属性设置初始值。