会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
来自东方地灵殿的小提琴手
愿时间能带走痛苦
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
3
4
5
6
7
8
9
10
11
···
28
下一页
2020年8月16日
《深度剖析CPython解释器》11. 深入Python虚拟机,探索虚拟机执行字节码的奥秘
摘要: 楔子 这一次我们就来剖析Python运行字节码的原理,我们知道Python虚拟机是Python的核心,在源代码被编译成PyCodeObject对象时,就将由Python虚拟机接手整个工作。Python虚拟机会从PyCodeObject中读取字节码,并在当前的上下文中执行,直到所有的字节码都被执行完毕
阅读全文
posted @ 2020-08-16 19:22 古明地盆
阅读(5527)
评论(7)
推荐(3)
2020年8月15日
《深度剖析CPython解释器》10. Python中的PyCodeObject对象与pyc文件
摘要: 楔子 当我们想要执行一个py文件的时候,只需要python xxx.py即可,但是你有没有想过这背后的流程是怎么样的呢?从这里开始我们就开始进入到Python虚拟机的环节了,之前都是在介绍Python中的一些内置对象,不过虚拟机的执行流程、以及背后的原理却更是值得我们关注的。 这里我们先来说一下Py
阅读全文
posted @ 2020-08-15 02:31 古明地盆
阅读(3532)
评论(2)
推荐(1)
2020年8月14日
《深度剖析CPython解释器》9. 解密Python中字典和集合的底层实现,深度分析哈希表
摘要: 楔子 Python的字典是一种映射型容器对象,保存了键(key)到值(value)的映射关系。通过字典,我们可以快速的实现值的查找,json这种数据结构也是借鉴了Python中的字典。而且字典在Python中是经过高度优化的,因为Python底层也在大量的使用字典这种数据结构。 那么这次我们就来全面
阅读全文
posted @ 2020-08-14 16:50 古明地盆
阅读(3812)
评论(8)
推荐(4)
2020年8月9日
《深度剖析CPython解释器》8. 解密Python中列表的底层实现,通过源码分析列表支持的相关操作
摘要: 楔子 Python中的列表可以说使用的非常广泛了,在初学列表的时候,老师会告诉你列表就是一个大仓库,什么都可以存放。不过在最开始的几个章节中,我们花了很大的笔墨介绍了Python中的对象,并明白了Python中变量的本质,我们知道列表中存放的元素其实都是泛型指针PyObject *,所以到现在列表已
阅读全文
posted @ 2020-08-09 04:03 古明地盆
阅读(3040)
评论(8)
推荐(2)
2020年8月7日
《深度剖析CPython解释器》7. 解密Python中字符串的底层实现,以及相关操作
摘要: 楔子 这一次我们分析一下Python中的字符串,首先Python中的字符串是一个变长对象,因为不同长度的字符串所占的内存空间是不一样的;但同时字符串又是一个不可变对象,因为一旦创建就不可以再修改了。 而Python中的字符串是通过unicode来表示的,因此在底层对应的结构体是PyUnicodeOb
阅读全文
posted @ 2020-08-07 23:44 古明地盆
阅读(3667)
评论(13)
推荐(2)
2020年8月5日
《深度剖析CPython解释器》6. 解密Python中bytes对象的底层实现,以及相关操作
摘要: 楔子 不少编程语言中的"字符串"都是使用字符数组(或者称字符序列)来表示,比如C语言和go语言就是这样。 char name[] = "komeiji satori"; 一个字节最多能表示256个字符,所以对于英文来说足够了,因此一个英文字符占一个字节即可,然而对于那些非英文字符便力不从心了。因此为
阅读全文
posted @ 2020-08-05 22:40 古明地盆
阅读(2462)
评论(9)
推荐(0)
《深度剖析CPython解释器》5. 解密Python中的整数在底层是如何实现的,以及为什么Python中大整数的运算不会溢出
摘要: 楔子 这次我们来分析一下Python中的整数是如何实现的,我们知道Python中的整数是不会溢出的,换句话说,它可以计算无穷大的数。只要你的内存足够,它就能计算,但是对于C来说显然是不行的,可Python底层又是C实现的,那么它是怎么做到整数不会溢出的呢? 既然想知道答案,那么看一下Python中的
阅读全文
posted @ 2020-08-05 00:29 古明地盆
阅读(4613)
评论(7)
推荐(4)
2020年8月1日
《深度剖析CPython解释器》4. 解密Python中最简单的对象--浮点数的底层实现
摘要: 楔子 从现在开始,我们就来分析Python中常见的内置对象、以及对应的实例对象,看看它们在底层是如何实现的。但说实话,我们在前面几节中介绍对象的时候,已经说了不少了,不过从现在开始要进行更深入的分析。 除了对象本身,还要看对象支持的操作在底层是如何实现的。我们首先以浮点数为例,因为它是最简单的,没错
阅读全文
posted @ 2020-08-01 19:57 古明地盆
阅读(2858)
评论(10)
推荐(4)
2020年7月31日
《深度剖析CPython解释器》3. Python的引用计数是什么?Python底层是如何管理对象的?
摘要: 楔子 在上一篇中我们说到了Python中的对象在底层的数据结构,我们知道Python底层通过PyObject和PyTypeObject完成了C++所提供的对象的多态特性。在Python中创建一个对象,会分配内存并进行初始化,然后Python会用一个PyObject *来保存和维护这个对象,当然所有对
阅读全文
posted @ 2020-07-31 17:26 古明地盆
阅读(4004)
评论(0)
推荐(3)
2020年7月29日
《深度剖析CPython解释器》2. 解密PyObject、PyVarObject、PyTypeObject在Python对象体系中所代表的含义,用CPython来总结Python中type和object之间的关系
摘要: 楔子 我们在上一篇中说到了,面向对象理论中"类"和"对象"这两个概念在Python内部都是通过"对象"实现的。"类"是一种对象,称为"类型对象","类"实例化得到的也是"对象",称为"实例对象"。 并且根据对象的不同特点还可以进一步分类: 可变对象:对象创建之后可以本地修改; 不可变对象:对象创建之
阅读全文
posted @ 2020-07-29 18:12 古明地盆
阅读(6733)
评论(5)
推荐(4)
上一页
1
···
3
4
5
6
7
8
9
10
11
···
28
下一页
公告