
Python源码解析
参考了《Python源码剖析》,本书剖析的是Python2的版本,我这里剖析的是Python3.6的版本
LessenPaul
Talk is cheap,show me the code
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python源码之内存管理机制(二)---垃圾回收机制
文章目录1、引用计数1.1 循环引用问题2、三色标记机制3、垃圾收集机制3.1 对象集合--双向链表3.2 分代回收机制3.3 标记-清除机制3.3.1 寻找root object的集合3.3.2 垃圾标记3.3.3 垃圾回收4、垃圾收集机制总结1、引用计数 在之前的文章中我们都有看到各种与引用计数相关的东西,Python和Java,c#一样也在语言层面实现了动态的内存管理机制,这一点我们很清楚,这就意味着我们从繁琐的手动内存管理中解放了,将内存的释放和各种管理交给Python自己完成,我们可以看到在原创 2020-05-27 11:42:36 · 559 阅读 · 0 评论 -
Python源码之内存管理机制(一)---内存管理架构
文章目录1、Python内存管理架构2、小块空间的内存池2.1 Block2.2 pool2.3 arena2.4 内存池1、Python内存管理架构 在Python中,内的管理被抽象成一种层次化的结构,在解析Python的内存管理机制前,有必要对Python的内存管理架构模型做一些了解。 在最底层也就是第0层,是操作系统所提供的一些内存管理的接口,例如C中的malloc, realloc,free等。在这一层是由操作系统来实现并管理的,对于Python来说touch不到这一层的行为权限。 再原创 2020-05-26 10:03:44 · 546 阅读 · 0 评论 -
Python源码之虚拟机
文章目录1、Python虚拟机架构1.1 虚拟机的执行环境1.2 PyFrameObject对象1.3 PyFrameObject对象的创建2、命名空间2.1 Python程序的构成模块2.2 符号赋值2.3 作用域2.3.1 LGB规则2.3.2 global表达式3、virtual machine 运行框架 Python虚拟机是Python的核心部分,它负责很多事情包括运行字节码等等,从前面我们知道,当Python的source code被编译成字节码指令,之后就由Python虚拟机负责根据上下文环原创 2020-05-23 00:29:57 · 837 阅读 · 0 评论 -
Python源码之编译与字节码
文章目录1、Python程序的执行流程2、PyCodeObject对象2.1 pyc文件2.2 PyCodeObject对象2.3 再谈pyc文件3、Pyc文件的生成3.1 Pyc文件的创建3.2 pyc文件的写入1、Python程序的执行流程 我们经常会听到有人说,啊,Python是一种解释性语言,太low啦。其实Python从原理上讲和Java等语言一样都是通过一个解释程序将source code翻译成中间代码也就是字节码,然后由虚拟机来执行。在Python中有个非常核心的东西就是解释器,因此我们原创 2020-05-21 21:52:13 · 1198 阅读 · 0 评论 -
Python源码之Set集合对象底层解析
文章目录1、PySetObject对象2、PySetObject对象的创建3、PySetObject对象元素的插入4、PySetObject对象元素的删除5、PySetObject对象的扩容机制1、PySetObject对象 之前我们解析了Python中的dict对象,我们知道在dict的底层实际上是一个hash table,是一种映射关系。同样,集合对象底层也是hash table,因此,对于细节的描述在这一节就不细说了。关于hash table可参照这篇文章。python的dict对象底层实现,话原创 2020-05-20 19:03:27 · 1506 阅读 · 0 评论 -
Python源码之dict字典底层解析
文章目录1、PyDictObject1.2 PyDictKeyEntry1.3PyDictKeysObject1.4 PyDictObject2、探究entry三种状态3、PyDictObject的创建与操作3.1 PyDictObject的创建3.2 谈谈PyDictObject中的hash table3.3 PyDictobject对象的元素搜索3.4 PyDictObject的元素插入 python中的dict可能我们最常用的容器之一了,它是一种用来存储某种关系映射的数据对的集合。在其他语言中例如原创 2020-05-14 23:53:17 · 1959 阅读 · 0 评论 -
Python源码之list列表对象底层解析
在Python中我们使用地最多的容器应该就是list了,list具有非常强大的功能,它不仅拥有像Java等其他语言的数组一样通过下标索引来读取列表中元素的功能,而且又高于数组,因为它可以在容器中存储不同类型的数据。为什么列表会具有这么强大的功能呢?实际上,其底层就是一个数据结构中的线性表的顺序表结构,只不过,它并非简单的一体式存储,而是采用了分离式的顺序表结构,在后面的解析中我们会慢慢一步步揭开它的神秘面纱,那么当我们在利用列表容器来对一系列数据进行操作时,是否能够清楚地了解其底层做了哪些事情吗?接下来原创 2020-05-12 18:54:21 · 1022 阅读 · 0 评论 -
Python中源码之字符串底层解析
Python中的字符串对象概述Python的对象分为 “可变对象” 和 “不可变对象”, 可变对象也还可以分为 “可变” 和 “不可变”,这里所谓的可变就是说对象所维护的数据是可以变化的,举个例子说明,list容器中的元素可以进行添加、删除、修改等操作,也就是说这个容器对象所维护的数据是可以动态变化的;而所谓 “不可变” 就是说,此对象中所维护的数据一旦创建后就不能发生改变,即便对这个对象进行...原创 2019-12-02 14:29:13 · 1149 阅读 · 0 评论 -
Python源码之整数对象底层解析
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-11-22 21:08:24 · 692 阅读 · 0 评论