1 . 定义 : python是一个免费 , 开源 , 跨平台 , 动态 , 面向对象的编程语言 .
2 . python执行过程 :
源代码 –编译--> 字节码(特定python的表现形式.pyc) –解释--> 机器码
|—————————1次—————————————|
3 . 数据类型 :
None : 空
int : 整型
小整数对象池 : CPython中整数-5 到 256 , 永远存在小整数对象池中 , 不会释放.
float : 浮点型
str : 字符串
bool : 布尔
complex : 复数
4 . 运算符优先级从高到低 :
小括号 > 算数运算符 > 比较运算符 > 增强运算符 > 逻辑运算符
ord(字符串) : 返回该字符串的Unicode码 .
chr(Unicode码) : 返回对应的字符串 .
5 . 格式化字符串 :
% : [- + 0 宽度.精度]类型码
- : 左对齐(默认就是右对齐)
+ : 显示正号
0 : 左侧空白位置补零
宽度 : 整个数据输出的宽度(字符大小)
精度 : 保留小数点后多少位
类型码 : s 字符串 d 整数 f小数
6 . 字典推导式 : {键:值 for 变量 in 可迭代对象 if 条件}
7 . 位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参 :
def fun1(a,b,*args,c,d,**kwargs):
print(a,b,*args,c,d,**kwargs)
8 . 作用域 :
Local 局部作用域 --> Encolsing 外部嵌套作用域 --> Global 全局作用域 --> Builtins 内建模块作用域
9 . 类的设计 :
① 分而治之
将一个大的需求分解为许多类 , 让每个类处理一个独立的功能 .
优点 : 便于分工 , 便于复用 , 可扩展性强 .
② 封装变化
需求可能会变化的功能要单独封装 , 避免影响其他类 .
③ 高内聚
类中各个方法都在完成一项任务
④ 低耦合
类与类的关联性与依赖度要低 , 让一个类变化 , 尽少影响其他的类 .
10 . 多态 : 调用父类同一个方法 , 但在不同子类间 , 有不同的表现 .
① 体现子类的个性化 .
② 增强程序扩展性 , 体现开闭原则 .
11 . 重写 : 子类实现了父类中相同(名称、参数)的方法 , 在调用该方法时 , 实际执行的是子类的方法 .
12 . 类与类的关系 :
① 泛化(继承)
子类与父类的关系 , 耦合度最高 ;
B类泛化A类 , 意味着B类是A类的子类 .
做法 : B类继承A类 .
② 关联(聚合/组合)
部分与这个整体的关系 , 耦合度要低于泛化 .
A类关联B类 , 意味着B是A的一部分 .
做法 : 在A类中包含B类的成员 .
③ 依赖
合作关系 , 耦合度最低 .
A类依赖B类 , 意味着A类的某个功能以依靠B类实现 .
做法 : 在A类的某个方法中 , 将B类作为参数 .
13 . 设计原则 :
① 开闭原则(目标)
对扩展开放 , 对修改关闭 .
允许增加新功能 ,不修改客户端(使用者)代码 .
② 类的单一职责(类的定义)
一个类有且只有一个改变的原因 .
外界一个需求的变化 , 内部一个改变的类 .
③ 依赖倒置(用父类)
客户端代码尽量依赖(使用)抽象(父)的组件 .
抽象的是稳定的 , 实现是多变的 .
④ 组合复用原则(少用继承)
如果仅仅为了代码复用优先选择组合关系 , 而非继承关系 .
组合的耦合度低于继承 , 灵活度高于继承 .
例如 : 人可以使用手机/座机/网络电话 .
⑤ 里氏替换(重写注意事项)
父类出现的地方可以被子类替换 , 在替换后依然保持原有功能 .
从内存角度解释 : 父类(成员少) 子类(成员多)
子类在重写父类方法时 , 尽量选择扩展重写(先调父类同名方法) , 不要改变原有功能.
⑥ 迪米特法则(低耦合)
原话 : 不要和陌生人说话 .
类与类交互时 , 在满足功能的基础上 , 传递的数据量越少越好 .
低耦合 .
14 . 常见异常 :
IndexError : 索引越界
ValueError : 值错误
NameError : 变量未定义
AttributeError : 对象没有相应属性
NotImplementedError : 未实现异常
KeyError : 没有对应的键
15 . 生成器表达式 : (表达式 for 变量 in 可迭代对象 [if 条件])
16 . lambda表达式 :
定义 : 变量 = lambda [形参] : 方法体(一条语句 , 不支持赋值)
调用 : 变量(实参)
17 . map(函数 , 可迭代对象) : 使用可迭代对象中的每个元素调用函数 , 将返回值作为新可迭代对象元素 , 返回值为新可迭代对象 .
18 . filter(函数 , 可迭代对象) : 根据条件筛选可迭代对象中的元素 , 返回值为新可迭代对象 .
19 . 文件操作 :
with open(文件名 , "r(只读) | w(只写) | a(追加)") as 变量名 :
变量名 . write("字符")
变量名 . writelines (字符串列表)
变量名 . readline () # 读取一行
变量名 . readlines () # 读取全部行
for 变量 in 变量名 : # 迭代读取每行
语句
20 . 二进制文件操作 :
with open(文件名 , "rb(只读) | wb(只写) |r+b(读写)") as 变量名 :
变量名 .write(字节串)
变量名 .read(字节数) # 读取指定字节
变量名 .read() # 读取全部字节
变量名 . tell () # 获取文件指针位置
变量名 . seek(偏移量) # 设置文件指针位置