其他
垃圾回收机制
- 引用计数:根据变量值的引用数量
- 标记清除:用来解决循环引用带来的内存泄漏问题.
- 标记:从根节点出发遍历对象,对能访问到对象值的打上标记,表示对象可达
- 清除:对那些没有标记的对象进行回收
- 分代回收:降低引用计数的扫描频率,提高垃圾回收的效率,
新生代
、老年代
,新生代分为伊甸区
、幸存区
。对象刚创建时存在于伊甸区,经过一次回收如果对象还存在时,放入幸存区,幸存区经过多次(一般为15次)回收依然存在,则放入老年代,回收时先回收新生代,如果内存足够时则不扫描老年代,否则扫描老年代
深浅拷贝
- 浅拷贝:是把原列表第一层的内存地址不加区分完全copy一份给新列表,修改可变类型中的值,影响原数据
# python list1=[ 'egon', 'lxx', [1,2] ] list3=list1.copy()
- 深拷贝:为了使得新列表与原列表的改操作完全独立开,区分开可变类型与不可变类型的copy机制
import copy # 引入深拷贝模块 list3 = copy.deepcopy(list1)
队列与堆栈
-
队列:FIFO,先进先出
l = [] # 入队 l.append('first') l.append('second') l.append('thrid') # 出队 l.pop(0) l.pop(0) l.pop(0)
-
堆栈:LIFO,后进先出
l = [] # 入栈 l.append('first') l.append('second') l.append('thrid') # 出栈 l.pop() l.pop() l.pop()
字符编码
- ACSII码表
- GBK、Shift-JIS
- unicode:
- 兼容万国字符、与万国字符都有对应关系
- 采用16位(8位=1Bytes)偏僻字采用4字节、8字节
- utf-8:
unicode transform format-8
英文->1Bytes、汉字->3Bytes
内存规定使用的是
unicode
,我们可以改变的是存入硬盘采用的格式unicode-gbk/unicode-shif-jis/unicode-utf-8