python提高

#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__ 实例() 这个有可能会用

猜你喜欢

转载自www.cnblogs.com/zxt-cn/p/9178981.html