Cpython探秘
文章平均质量分 96
主要是研究Cpython解释器
liyuanchao_blog
这个作者很懒,什么都没留下…
展开
-
CPython如何实现超大整数
整数是“数字方式”持久化的,这意味着加法就像我们在小学学到的一样简单,python 的源代码向我们展示了这也是它的实现方式。文件longobject.c中名为x_add的函数执行两个数字的相加。上面的代码片段取自x_add函数,您可以看到它遍历数字并执行数字加法并计算和传播进位。当加法的结果是负数时,事情就变得有趣了。的符号ob_size是整数的符号,这意味着,如果你有一个负数,那么它就是ob_size负数。的绝对值ob_size将决定 中的位数ob_digit。与加法的实现方式类似,减法也以数字方式进行翻译 2022-06-26 22:35:58 · 874 阅读 · 0 评论 -
Cpython源码分析03(*)_简要总结下Cpython是如何执行python test.py
当我们通过命令行传入参数的方式调用 python 解释器去运行一个模块的时候,比如: $ python test.py 图2.1中所示的过程将开始进行。(当然这只是其中一种运行 Python 程序的方式比如也可以在交互模式下单行运行,对于交互模式,这里暂时不做讨论。) 基于Python3.7Python 可执行程序是一个用 C 语言编写的程序。当它被执行的时候,所发生的事情其实就和其他 C 语言程序(比如 Linux 内核或是一个简单的 hello world 程序)差不多。请花一点时间来理解一下,Pyt原创 2022-06-04 20:25:10 · 566 阅读 · 0 评论 -
Cpython源码分析02_Python代码是怎么运行起来的
目录1.python代码运行时的入口2.window与Linux入口出的区别3.继续前进,生成_Py_Main对象,并做简单初始化4.继续前进,我们来到了pymain_mian5.pymain_init都干了些什么事情呢6.继续前进,进入4步骤中的pymain_run_python看看7.重点分析一下pymain_run_filename,既通过交互式环境或者文件执行代码的过程说明:如果没有特殊说明,均基于window平台讨论1.python代码运行时的入口入口文件为python.c,当宏MS_WI原创 2021-08-20 00:39:39 · 8469 阅读 · 0 评论 -
Cpython源码分析01_使用Visual Studio2017来研究Cpython,debug和release两种模式下编译的Python中__sizeof__()不一样的地方
阅读本文章最好有一些C语言和python语言的基础的读者1.为什么要研究Cpython目前python主流的解释器CPython、JPython、IPython、PyPy、IronPython,但是用到最多的、生态最好的还是Cpython。了解python底存的构造,比如List、Dict、Set、Tuple等他们到底是怎么实现的,而不是用它的时候两眼一抹黑,了解Cpython有助于让我们编写出更加高质量的python代码。由于Cpython中绝大部分都是用C语言编写的,研究它有助于不会忘记C语言原创 2021-08-04 01:58:02 · 8428 阅读 · 0 评论