python提高

1.GIL

pass 占位符,空语句
全局解释器锁,保证同一时刻只有一个线程在执行,是解释器cpython的历史原因
GIL和python语言本身没有任何关系

IO密集形 :使用于多线程,协程
计算密集形 :使用于进程

用c语言解决GIL问题,在python中嵌入c:编译c为一个动态库
python加载库,再调用里面的函数

python里面调用c,java,等等所有其他语言都可以

2.深拷贝,浅拷贝

python里没有形参,实参,一切都是引用!一切都是指向
id()能显示里面变量指向的数据的地址

深拷贝,copy.deepcopy能实现深拷贝,把指向的变量也拷贝一份,完全拷贝一份

当一个变量 a=xxx 意思是a指向(引用)了xx,

完成浅拷贝,copy.copy(),只拷贝最上面一层,不管可变不可变类型

深拷贝,copy.deepcopy(),所有引用层次和数值都拷贝一次,一旦看到可变类型的变量,就继续深入来拷贝

深拷贝一直拷贝到不可变类型;

拷贝的其他方式

列表切片 d=c[:] 与 d = copy.copy©一样,属于浅拷贝
字典的copy方法可以拷贝一个字典(字典是无序的通过哈希排序,字典里的value不存在字典里,而是键对值的引用)

3.私有化

前两个下划线,后面没有,私有化属性,避免与子类属性名冲突,无法在类外直接访问
前两个,后两个,是魔法属性对象
前一个下划线,禁止from xxx import *导入,import xxx xxx.是可以用的,类对象和子类可以访问
单后置下划线,避免和关键词冲突

4.import 模块导入

import搜索路径

导入相当于把模块的代码复制了一份,import能保证防止模块的重复导入
验证sys.path
sys.path.append插入路径
sys.path.insert()优先插入
重新加载模块,
from imp import reload
reload(xxx)

多个模块导入的注意点

python里一切皆引用,后面导入的重名模块会把前面的覆盖掉
尽量用import xxx
少用from xxx import * 避免重名

5.封装继承多态

抽象出对象的特装封装成一类
从类中特化出具体的对象
简化开发流程 这就是封装 通过特殊的属性( class )找到谁创建的

继承是为了对原有类功能的扩充

多态,就是引用子类的重写

6.小整数

你可能感兴趣的:(python基础)