1. 上次课内容回顾
模块
1. import xxxx
2. from xxxx import xxxx
random
randint
uniform
sample
choice
shuffle
Collections
Counter
defaultdict
deque 双向队列
queue 队列 FIFO
stack 栈 FILO
Iterable
Iterator
time
time.time() 时间戳. 数字 1970-01-01 08:00:00
time.strftime("%Y-%m-%d %H:%M:%S") 格式化时间
time.localtime() 结构化时间
n = 1000000
struct_time = time.localtime(n)
time.strftime("%Y-%m-%d %H:%M:%S", struct_time)
s = "1980-01-02 12:32:56"
struct_time = time.strptime(s, "%Y-%m-%d %H:%M:%S") parse
time.mktime(struct_time)
datetime
pickle
序列化
dump 序列化. 写入到文件
load 反序列化, 从文件读取
dumps 序列化
loads 反序列化
pickle.dump(obj, open(path, mode="wb"))
json
dump 序列化. 写入到文件
load 反序列化, 从文件读取
dumps 序列化
loads 反序列化
json.dump(obj, open(path, mode="w"), ensure_ascii=False)
# a bytes object......
os
文件系统操作
os.mkdir
os.makedirs 创建文件夹 多级目录
os.rmdir 删除文件目录
os.removedirs() 删除目录 多级
os.listdir() 列出目录下的文件名字
os.getcwd() 工作空间
os.chdir() 切换工作空间
os.popen() 执行shell 有返回
os.system() 直接执行的.
os.path.dirname() 目录名
os.path.basename() 文件名
os.path.split() (目录名, 文件名)
os.path.isdir() 是否是文件夹
os.path.isfile() 是否是文件
os.path.exists() 是否存在
os.path.getsize()
sys
argv 接受命令行参数
path 环境变量. 模块的查找路径
version 版本
re
正则
. 除了换行以外
w 数字, 字母, 下划线
d 数字
s 空白
^ 开始
$ 结束
[] 字符组
() 分组
| 或者
* 重复0次或多次
+ 1次或多次
? 0次或1次
{n} 出现n次
{n,} n次或多次
{n,m} n次到m次
{5, 2} 报错
贪婪匹配
惰性匹配
.*?x 离它最近的x
re模块
(?P<name> 正则)
re.findall() 列表
obj = re.finditer()
for it in obj:
it.group(name)
re.match() 头
re.search()
re.compile() 加载正则
2. 面向对象
你就是上帝. 你指挥者全世界
你自己可以随意的创建对象.
对象:你执行某些操作的具体的个体
万事万物皆为对象.
必须使用类来创建对象. 类就是你脑海中的一个车的模样. 一张图纸.
属性: 价格, 品牌, 排量, 颜色
动作: 跑, 飞, 上西天.
创建对象:
用类来创建对象. 图纸去创建对象. 创建出来的对象必须要符合类的设计
函数:对功能或者动作的封装
类: 负责描述对象
对象: 用类创建的
__init__ 初始化操作
在类中的函数: 方法
方法第一个参数: self 对象本身
使用对象:
创建对象: 类名() -> __init__()
使用对象:
对象.属性
对象.方法
3. 如何编写类. 类与对象的关系 -> 重点理解
类是负责描述对象的 -> 类型
定义属性和方法
对象是通过类来创建的具体的个体. 每个对象都有自己的独立的名称空间
执行动作的时候最好是使用对象去执行.
self : 当前正在执行方法的对象
如何思考一个类怎么编写
手机
这一类事物. 拥有哪些相同的属性
这一类事物. 能执行哪些相同的功能
属性:
品牌, 价格, 颜色, 内存, 芯片, 像素
功能:
打电话, 发信息, 打游戏, 看视频, 拍照
4. 封装
Account
card, password, money
card = "哈哈哈"
password = 123456
属性的封装:把很多个变量封装到一个对象中.
方法的封装:把很多个方法封装在一个对象中.
5. 继承
子类可以自动拥有父类中的除了私有内容外的其他所有内容
class A:
pass
class B(A): # 小括号表示继承关系
pass
一个子类可以拥有多个父类. 多继承
什么样的关系适合写继承
如果x是一种y. 此时x应该继承y.
Cat是一种Animal
6. 多态
同一个对象多种形态.
鸭子模型: 只要会嗷嗷叫的就是好鸭子
python到处都是多态性
7. 类的成员
1. 变量
1. 实例变量 -> 对象.变量
2. 类变量 -> 直接写在类中的变量 -> 尽量使用类名去访问 类名.变量
2. 方法
1. 实例方法 -> 对象.方法 第一个参数就是对象本身. 一般都写成self.
2. 类方法 -> 类名.方法() 也可以对象.方法()
1. 第一个参数. 要求传递过来一个类
2. 类方法上面必须加上一个@classmethod装饰器
3. 静态方法 -> 类名.方法() 也可以对象.方法()
1. 类方法上面必须加上一个staticmethod装饰器
相当于在类的名称空间中定义了一个普通的函数
3. 属性(不是咱们认为的那种)
@property
把一个方法装饰成一个属性来使用
8. 类与类之间的关系(重点)
1. 依赖关系
2. 关联关系, 组合, 聚合
把另一个类的对象作为当前这个类的一个属性存储
3. 继承关系, 实现关系
9. 私有内容
双下划线开头的是私有的内容
10. 笔试题