Python学习之旅
Python学习之旅2021.01.08
指导教师:逻辑教育讲师Amy
一、迭代器
- 1.可迭代对象
- 可以用for循环遍历的对象都是可迭代的对象,如
str
、list
、tuple
、dict
、set
等 generator
(生成器和yield
生成器函数)是可迭代对象
- 可以用for循环遍历的对象都是可迭代的对象,如
- 2.判断是否为可迭代对象
- 查看是否有
__iter__
方法(ctrl+鼠标左键) isinstance(object,Iterable)
,需导入collections
中Iterable
内置模块
- 查看是否有
- 3.迭代器介绍:
- 迭代器是一种迭代取值工具,迭代取值是一个重复过程,每一次重复都基于上一次的结果,是一种通用的不依赖索引的取值方式。
for
循环是一种迭代器
- 迭代器是一种迭代取值工具,迭代取值是一个重复过程,每一次重复都基于上一次的结果,是一种通用的不依赖索引的取值方式。
- 4迭代器内置方法
- 一个可以被
next()
调用,并不断返回下一个值的对象,属于迭代器。next()不能超出迭代器范围,否则报错,并且只能顺序调用,不能逆序。通常用for
循环调用 - 通过
iter()
方法可将可迭代对象转为迭代器 - 判断是否为迭代器(可迭代对象不一定是迭代器)
- 查看是否有
__itre__
,__next__
方法 isinstance(object,Iterator)
,需导入collections
中Iterator
内置模块
- 查看是否有
- 一个可以被
- 5.可迭代对象与迭代器区别
- 可用于
for
循环的都是可迭代对象 - 作用于
next()
方法的都是迭代器 list
,dict
,str
等都是可迭代对象,但不是迭代器,因为他们没有next()
方法,可通过iter()
方法将他们转为迭代器- Python中
for
循环本质是不断通过调用next()
实现
- 可用于
二、生成器.
- 1.生成器定义:一边循环一边计算的机制,称为生成器
generator
。生成器在循环过程中根据算法不断推出后续元素,这样就不用创建整个完整列表,从而节省大量空间。迭代器能做的,生成器都能做。 - 2.如何创建生成器
- 生成器表达式:
(ele_exp for element in iterable)
源于迭代和列表推导组合。使用小括号()
- 生成器函数
- 当函数中存在
yield
关键字,则该函数就是一个generator
。调用函数就是创建了一个生成器对象,其原理就是通过调用next()
或__next__
方法,指导捕获异常。yield
返回一个值到next()
,并记住位置,下次遇到next()
时,从该位置开始执行。
send()
方法:和next()
一样,都能让生成器继续走,遇到yield()
返回,但send()能返回一个值,这个值作为yield表达式整体结果。send()
作为启动生成器时,只能以send(None)
- 当函数中存在
- 生成器表达式:
三、面向对象
- 1.介绍
- 能用面向对象思想实现的程序,都能通过面向过程完成。选用时,只看哪种思想更适合开发需求
- 面向对象是将数据与函数绑定到一起进行封装,减少代码重复。而面向过程根据逻辑从上往下编程
- 2.类的定义
- 采用关键字
class
,通常采用大驼峰方式命名
- 采用关键字
- 3.类的对象
- 创建对象又称为类的实例化
- 创建对象又称为类的实例化
- 4.
self
参数- 定义类的方法时会自动创建,对象调用时无需写入
self
本身为形参,是指对象本身
- 5.
__init__()
方法- 称为初始化方法,又称为构造方法,创建对象时会自动执行该方法,为对象属性设置初始值
- 6.
__str__()
方法- 在开发过程中,希望打印对象变量时,能够打印自定义内容,就可以使用
__str__()
方法,将自定义内容通过return
返回,但返回内容必须为字符串
- 在开发过程中,希望打印对象变量时,能够打印自定义内容,就可以使用