#python提高
1. gil是什么:全局解析器锁
2. gil的作用:单核的情况下可以实现多任务(并发)
3. gil的解决方案:
1.换成一个cpu一个进程,进程池
2.换个java解析器(不建议,性能)
3.用java,c实现多线程的功能,
4.后期我一般用多进程加协程实现效率最高
#拷贝
1.深拷贝:递归里面的数据全部复制一份,这个性能低,元组,字符串,数字,一般深拷贝跟我们的引用一样
![](images/02.png)
2.浅拷贝:复制第一层的数据
![](images/03.png)
#私有属性
xx: 公有变量
_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到),但是可以通过特殊的方式去访问,_类名__私有属性名------->这个可以使用(实例对象.__dict__查看)
__xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字
xx_:单后置下划线,用于避免与Python关键词的冲突
#搜索路径
导入模块,去我们搜索路径下去一个一个查找,如果找到一个就完成了此次导入
#导入模块
from xx import xx :这个你理解成深拷贝,会重新创建一个内存对象,这个如果多个文件需要个性同一个文件的,那么这个不能使用,使用(import xx)
#封装
一个功能封装成一个函数,目的是为了重复使用代码,方便查看代码
#继承
如果多的子类都需要都一个方法,那么我们会把这个方法给父类,目的,重复使用代码
#多态
必须是继承的,一个函数有多种不同的显示效果(结果不一样),这个在Python中不严谨.
#面向对象开发
1. 把相关的函数组合在一起形成一个对象,特性:封装,继承,多态.
#super()
从继承表中找到当前自己的位置,super()相当于调用继承表中上一个对象,优点:让所有用继承用来的类只初始化一次,继承表可以使用(类.__mro__查看)
#实例对象和类对象
1.实例可以访问所有的方法及属性
2.类对象一般只能访问类属性,静态方法,类方法,当然可以访问实例(但是这种不常用)
![](images/04.png)
#常用的魔法方法
__init__
__new__
__call__ 实例() 这个有可能会用