分类 Python 内核源码阅读 下的文章

Python内核源码阅读(二十四)

Python内核源码阅读(二十四)虚拟机产生异常及捕获我们下面要研究的就是 1/0 这个计算过程中是如何将 ZeroDivisionError 抛出的.>>> x = "1/0" >>> from dis import dis >>> dis(x) 1 0 LOAD_CONST ...

admin@copie.cn 2018 年 06 月 06 日 暂无评论

Python内核源码阅读(二十三)

Python内核源码阅读(二十三)Python 虚拟机中的 for 循环控制流我不应该跟着 cpython 的官方库去看的,赶脚自己就是铁头娃和填坑侠.>>> x = "for i in (1, 2):\n print(i)" >>> dis(x) 1 0 LOAD_CONST ...

admin@copie.cn 2018 年 06 月 05 日 暂无评论

Python内核源码阅读(二十二)

Python内核源码阅读(二十二)Python 虚拟机中的 if 控制流a = 1 if a > 10: print("a > 10") elif a < -2: print("a < -2") elif a == 1: print("a == 1") else: print(...

admin@copie.cn 2018 年 06 月 02 日 暂无评论

Python内核源码阅读(二十一)

Python内核源码阅读(二十一)内建对象的创建In [2]: dis("a = 1") 1 0 LOAD_CONST 0 (1) 2 STORE_NAME 0 (a) 4 LOAD_CONST 1 (None...

admin@copie.cn 2018 年 06 月 02 日 暂无评论

Python内核源码阅读(二十)

Python内核源码阅读(二十)Python 虚拟机的运行框架Python启动后,首先会进行 Python 运行环境的初始化.运行环境和执行环境不同,运行环境是一个全局的概念,而执行环境是一个栈帧,栈帧和 CodeBlock 对应.待初始化完成后,运行的过程就像多米诺骨牌一样,一环一环地展开.现在假设运行时初始化已经完成,推动第一个骨牌的函数就是 PyEval_EvalFrameEx.PyO...

admin@copie.cn 2018 年 06 月 02 日 暂无评论

Python内核源码阅读(十九)

Python内核源码阅读(十九)PyFrameObjecttypedef struct _frame { PyObject_VAR_HEAD struct _frame *f_back; /* previous frame, or NULL */ // 执行链上的前一个 frame PyCodeObject *f_code...

admin@copie.cn 2018 年 06 月 01 日 暂无评论

Python内核源码阅读(十九)

Python内核源码阅读(十九)PyFrameObjecttypedef struct _frame { PyObject_VAR_HEAD struct _frame *f_back; /* previous frame, or NULL */ // 执行链上的前一个 frame PyCodeObject *f_code...

admin@copie.cn 2018 年 06 月 01 日 暂无评论

Python内核源码阅读(十八)

Python内核源码阅读(十八)Python 对原程序编译结果生成一个 .pyc 文件. Python 对 .py 文件的编译结果是字节码,为了能重复使用而不需要重新编译才有了写成 .pyc 文件. 对于解释器来说 PyCodeObject 对象才是真正的编译结果, pyc 文件只是这个对象在硬盘上的表现形式.PyCodeObject/* Bytecode object */ typedef...

admin@copie.cn 2018 年 05 月 14 日 暂无评论

Python内核源码阅读(十七)

Python内核源码阅读(十七)PyDictObject插入元素/* CAUTION: PyDict_SetItem() must guarantee that it won't resize the * dictionary if it's merely replacing the value for an existing key. * This means that it's sa...

admin@copie.cn 2018 年 05 月 13 日 暂无评论

Python内核源码阅读(十六)

Python内核源码阅读(十六)字典对象的操作字典对象的类型 PyDict_TypePyTypeObject PyDict_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "dict", sizeof(PyDictObject), 0, (destructor)dict_dea...

admin@copie.cn 2018 年 05 月 12 日 暂无评论

Python内核源码阅读(十五)

Python内核源码阅读(十五)字典对象的创建字典对象通过 PyDict_new 方法来创建.PyObject * PyDict_New(void) { // #define PyDict_MINSIZE 8 默认情况下会创建 8 个 entry PyDictKeysObject *keys = new_keys_object(PyDict_MINSIZE); if ...

admin@copie.cn 2018 年 05 月 11 日 暂无评论

Python内核源码阅读(十四)

Python内核源码阅读(十四)dict 的存储方式Python3 的 dict 对象 PyDictObject:typedef struct _dictkeysobject PyDictKeysObject; /* The ma_values pointer is NULL for a combined table * or points to an array of PyObjec...

admin@copie.cn 2018 年 05 月 10 日 暂无评论