GIL
- gil是什么:全局解析器锁
- gil作用:单核的情况下实现多任务
- gil解决方案:
- 进程
- 换解析器(javapython)
- 线程这块代码使用c,java去实现
- 进程加协程提高效率
科学计算使用单线程,
有堵塞的情况下可以使用多线程
深拷贝与浅拷贝
如果是不可变类型都是引用
api级别的基本都是浅copy
1. 深拷贝:递归所有的数据都复制一份,浪费资源
2. 浅拷贝:复制第一层
私有化
_xxx:这个是from xx import xxx这个不能导入
__xx:这个私有属性,外部不能访问,但是可以通过特殊的方式:_类名__xx
__init__:这些魔法方法
动态导入
import oldyang
oldyang.test()
oldayng = __import__("oldyang")
oldyang.test()
路径搜索
sys.path
匹配搜索路径中的模块,如果匹配到了,后面不执行
重新加载模块
from imp import reload
reload(模块) 好处不用重启程序
封装
一个功能一个函数,相关函数之间封闭到一个对象(类),好处:代码复用,让代码更利于理解,阅读
继承
多个子类有相同的功能(函数),我们会把相同的函数放到父类中.好处:代码复用
多态
1. 必须是继承
2. 调用一个函数,显示不同的效果
3. 但是他不是一个严谨的多态
类与实例之间的关系
魔法属性
1.__init__
2.__new__
3.__call__ 实例()
4.__dict__
5.__class__
面向对象开发
1. 把相关的函数放在一个类对象中(封装到一个类对象),这个面向对象开发