楔子 函数是任何一门编程语言都具备的基本元素,它可以将多个动作组合起来,一个函数代表了一系列的动作。当然我们之前说函数也是一个变量,该变量指向一个函数。而且在调用函数时会干什么来着,没错,要在运行时栈中创建栈帧,用于函数的执行。 那么下面就来看看函数在C中是如何实现的,生得一副什么模样 ...
楔子 之前分析了那么久的虚拟机,多少会有点无聊,那么本次我们来介绍一个好玩的,看看如何修改 Python 解释器的底层数据结构和运行时。了解虚拟机除了可以让我们写出更好的代码之外,还可以对 Python 进行改造。举个栗子: 是不是很有趣呢 通过 Python 内置的 ctypes 模块即可做到,而具体实现方式我们一会儿说。所以本次我们的工具就是 ctypes 模块 Python 版本为 . ,需 ...
2021-10-31 13:50 0 1298 推荐指数:
楔子 函数是任何一门编程语言都具备的基本元素,它可以将多个动作组合起来,一个函数代表了一系列的动作。当然我们之前说函数也是一个变量,该变量指向一个函数。而且在调用函数时会干什么来着,没错,要在运行时栈中创建栈帧,用于函数的执行。 那么下面就来看看函数在C中是如何实现的,生得一副什么模样 ...
楔子 我们之前分析了Python的核心--字节码、以及虚拟机的剖析工作,但这仅仅只是一部分,而其余的部分则被遮在了幕后。记得我们在分析虚拟机的时候,曾这么说过: 当Python启动后,首先会进行 "运行时环境" 的初始化,而关于 "运行时环境" 的初始化是一个非常复杂的过程 ...
楔子 这一次我们就来剖析Python运行字节码的原理,我们知道Python虚拟机是Python的核心,在源代码被编译成PyCodeObject对象时,就将由Python虚拟机接手整个工作。Python虚拟机会从PyCodeObject中读取字节码,并在当前的上下文中执行,直到所有的字节码都被 ...
楔子 在上一篇中我们说到了Python中的对象在底层的数据结构,我们知道Python底层通过PyObject和PyTypeObject完成了C++所提供的对象的多态特性。在Python中创建一个对象,会分配内存并进行初始化,然后Python会用一个PyObject *来保存和维护这个对象 ...
楔子 不少编程语言中的"字符串"都是使用字符数组(或者称字符序列)来表示,比如C语言和go语言就是这样。 一个字节最多能表示256个字符,所以对于英文来说足够了,因此一个英文字符占一个字节即可 ...
楔子 Python的字典是一种映射型容器对象,保存了键(key)到值(value)的映射关系。通过字典,我们可以快速的实现值的查找,json这种数据结构也是借鉴了Python中的字典。而且字典在Python中是经过高度优化的,因为Python底层也在大量的使用字典这种数据结构。 那么这次 ...
Python中的整型在底层是怎么定义的就行了。 int实例对象的底层实现 Python中的整数底层对应的结构 ...
楔子 这一次我们分析一下Python中的字符串,首先Python中的字符串是一个变长对象,因为不同长度的字符串所占的内存空间是不一样的;但同时字符串又是一个不可变对象,因为一旦创建就不可以再修改了。 而Python中的字符串是通过unicode来表示的,因此在底层对应的结构体 ...