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

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 日 暂无评论

Python内核源码阅读(十三)

Python内核源码阅读(十三)Python 中 PyDictObject 采用了散列表.这是一种表现为存储形式如 key:value(键值对)的数据的数据结构,用户通过索引 Key 来获取对应的 value 值. 对于数组或者 list 来说,内部数据只能通过数字下标获取,但在 dict 中, key 则可以是 Python 下任意的对象.Hash TablePython 中 dict 对...

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

Python内核源码阅读(十二)

Python内核源码阅读(十二)PyListObject 设置元素在完成类似于 list[index] = new_list_item 的操作时, Python 内部会调用 PyList_SetItem.但是我在 PyList_SetItem 标记没有成功.int PyList_SetItem(PyObject *op, Py_ssize_t i, PyObje...

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

Python内核源码阅读(十一)

Python内核源码阅读(十一)PyListObject 的定义typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ // ob_item 指向 list 的首地址 list[0] == ob_item[0] ...

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

Python内核源码阅读(十)

Python内核源码阅读(十)字符串对象的创建PyObject * //从Unicode字符串创建一个 PyUnicodeObject 对象 PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size) { // 建立指定长度的 PyUnicodeObject 对象 if (u == NULL) ret...

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

Python内核源码阅读(九)

Python内核源码阅读(九)正是因为 Python2 的 UnicodeError 让我放弃了它. Python3 就很少遇到了,Python3 原生的支持 Unicode 功劳不少.在 Python3 中默认的字符串采用 Unicode 编码方式,先看一下它的定义.Unicode 字符串有 4 种形式:compact asciicompactlegacy string, not read...

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

Python实现Karatsuba算法

Python实现Karatsuba算法Karatsuba算法是一种快速相乘算法,它由Anatolii Alexeevitch Karatsuba于1960年提出并于1962年发表.经典的乘法要 n^2 次个位数乘法而此算法只需要 3n^1.585Karatsuba的算法主要是用于两个大数的乘法,极大提高了运算效率,相较于普通乘法降低了复杂度,并在其中运用了递归的思想。基本的原理和做法是将位数...

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

Python内核源码阅读(八)

Python内核源码阅读(八)大整数的处理方法在 Python3 中并没有和 Python2的#define BLOCK_SIZE 1000 /* 1K less typical malloc overhead */ #define BHEAD_SIZE 8 /* Enough for a 64-bit pointer */ #define N_INTOBJECTS ((BLOCK_SIZE...

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