hongweipeng 发布的文章

Python内核阅读(四): 字符串对象


起步

在python3中,默认的字符串采用了unicode编码方式,它的结构定义为:

[unicodeobject.h]
typedef struct {
    PyCompactUnicodeObject _base;
    union {
        void *any;
        Py_UCS1 *latin1;
        Py_UCS2 *ucs2;
        Py_UCS4 *ucs4;
    } data;                     /* Canonical, smallest-form Unicode buffer */
} PyUnicodeObject;


Python内核阅读(二): 对象的创建


起步

python提供两种来创建对象, 一种是C API, 第二种通过类型对象创建,如 PyLong_Type .

在C API中也有两类, 一类是泛型的API,形式如 PyObject_xxx ,可以应用在任何python对象上, PyObject_Print([int obj]|[string obj]) .参数可以任意类型,其API内部自己确定最终调用的函数是哪一个.

另一类与类型相关的API,如:

PyObject *a = PyLong_FromLong(10);

不论采用哪种C API,最终都是直接分配内存.


Python内核阅读(一): 对象的基石--PyObject


起步

为了了解python的整体架构,也为了提升自我能力,学习他人优秀代码.

源码获取

源码从github上获取, 不仅可以自由切换版本,也可以跟进作者的更新.

git clone https://github.com/python/cpython

我看的是3.6.2版本的,这是我阅读时候的最新版本, 切换版本用:

git checkout v3.6.2