## 二、编码知识
### 常用编码介绍
> ASCII: 表示现代英语及其他西欧语言
> 兼容 utf-8,gbk。
> unicode: 万国码,2个字节表示一个字符。Python默认为unicode。
> gbk: 英文一个字节,汉字两个字节。 utf-8:英文一个字节,汉字三个字节。
### 中文乱码问题
> windows默认gbk,linux默认utf-8.当我们打开时,以gbk打开 所以是乱码。
> f=open(r“path“,"")
## 二、编码知识
### 常用编码介绍
> ASCII: 表示现代英语及其他西欧语言
> 兼容 utf-8,gbk。
> unicode: 万国码,2个字节表示一个字符。Python默认为unicode。
> gbk: 英文一个字节,汉字两个字节。 utf-8:英文一个字节,汉字三个字节。
### 中文乱码问题
> windows默认gbk,linux默认utf-8.当我们打开时,以gbk打开 所以是乱码。
> f=open(r“path“,"")
### 一、file文件操作
> 文本文件:存储的是普通字符文本,默认为unicode字符集。可以使用记事本打开
> 二进制文件:把数据内容用字节进行存储,无法使用记事本打开。
> 文件模块相关操作:
- os模块:基本操作系统,主要为了文件操作
- Io模块:文件流的输入和输出操作
- cvs模块:用于cvs文件处理
- pickle:用于序列化和反序列化
- fileinput:处理多个输入文件
> 创建文件对象 open():f=open(r“path”,“a”)
- r:读模式
- w:写模式
- a:追加模式,文件不存在创建,文件存在,再文件末尾追加内容
- b: 二进制模式
如果没有追加b,创建的是文本文件对象,加入b创建的是二进制文件对象,处理的基本单元是字节。
> 文件的写入步骤:
- 创建文件对象
- 写入数据
- 关闭文件对象
### 九、pycharm的调试模式
> 断点:程序运行到此此处,暂时挂起,停止执行。
设置断点:
- 在行号后面单机可增加断电
- 在断点上再单击可以取消断点
> 进入调试试图
- shift+f9
- debug
> 调试操作
- step over: 若当前执行的是一个函数,则会被这个函数当作整体一步完成,不会进入函数内部
- step into: 若当前执行的是一个函数,则会进入这个函数内部
- step out: 从子函数中跳出
-alt+f9: 一直执行,到光标处停止,用在循环内部时,点击一次就执行一个循环。
### 八、自定义异常
> 自定义异常由raise语句主动抛出。
### 七、with上下文管理
> 概念:可以通过with上下文管理,更方便的实现释放资源的操作。
结构
with context_expr as var:
语句块
> 功能:实现上下文自动管理,在with代码块执行完毕后自动还原之前进入该代码前的现场或上下文。不论何种原因跳出with,不论是否有异常,总能保证资源正常释放。极大的简化了工作。
### 六、常见异常的汇总及说明
> 一般不要将return放到try excpet else finally 块中,一般放到方法最后。
- SyntaxError:语法错误
- NameError:尝试访问一个没有申明的变量
- ZeroDivisionError:除数为0错误
- ValueError : 数值错误
- TypeError:类型错误
- AttributeError:访问对象的不存在的属性
- IndexError:索引越界异常
- KeyError:字典的关键字不存在
### 五、finally结构
> 说明:finally无论是否发生异常都会被执行,通常用来释放try模块中申请的资源
### 四、else结构
> try_except_else 结构
> 执行逻辑,如果没有抛出异常,则执行else块,如果抛出异常,执行except模块
### 三、try 多个except结构
==结构==
try:
被监控的语句模块
except Exception 1:
处理Exception1 的语句
except Exception2:
处理Exception2 的语句
> 规则:先子类再父类,父类在前子类的异常是无法识别的
### 二、try_except 结构
结构:
try:
被监控的可能引发异常的语句块
except BaseException as e:
异常处理语句块
### 异常
> 软件程序在运行过程中遇到的问题我们称为异常,英文是Exception,意思是例外。
> 异常机制本质:所谓异常处理,就是指程序在出现问题时依然可以正确的执行剩余的程序,而不会因为异常而终止程序执行。
> BaseException是所有异常父类。
> 异常也采用对象的方式来处理。
==处理过程==:
- 抛出异常
- bu'huo'yi'chang
### 二十、设计模式_单例模式实现
> 单例模式的核心作用是确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。
> 单例模式只产生一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较多的资源,如读取配置文件、产生其他依赖对象时。可以使用单例模式。
### 十九、设计模式_工厂模式实现
> 设计模式是面向对象语言特有的内容,GOF23种设计模式
- 工厂模式
- 单例模式
> 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管制和控制。
### 十八、组合
> is-a关系可以使用继承
> has-a 关系 可以使用组合
### 十七、对象的浅拷贝和深拷贝
> 变量的赋值操作:只能形成两个变量,实际上还是指向同一个对象
- 浅拷贝:对象包含的子对象内容不拷贝。因此,源对象和拷贝对象会引用同一个子对象
- 深拷贝:递归拷贝对象中包含的子对象,源对象和拷贝对象的队友的子对象也不同。
### 十六、特殊属性
### 十五、特殊方法和运算符重载
### 十四、多态
> ==概念==:指同一个方法调用由于对象不同可能会产生不同行为
- 多态是方法的多态,属性没有多态
-多态的存在有两个必要条件:继承、方法重写。
### 十三、super()获得父类定义
> 解释:在子类中,用super直接获得父类的方法。
### 十二、Mro()
> 如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将从左到右搜索
==mro(method resolution order)==:方法解析顺序。