- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 《Python源码剖析》阅读笔记:第五章-dict对象
第五章-dict对象 Python里的dict和C++ STL的map一样,都是映射容器(key->value),但实现原理不同。由于Python内部大量使用dict这种结构(比如字符串对象的intese机制),效率要求很高,所以Python没有使用STL map的平衡二叉树,而采用哈希表,最低能在O(1)时间内完成搜索。使用hash就必须解决冲突的问题,dict采用的是开放寻址法。原
2012-08-17 09:15:16 5907
原创 《Python源码剖析》阅读笔记:第四章-list对象
第四章-list对象 list对象定义:typedef struct {PyObject_VAR_HEADPyObject **ob_item;Py_ssize_t allocated;} PyListObject;list对象是变长对象,所以有变长对象头ob_item数组为真正的存储容器,用来存储PyObject对象指针。ob_size表示list长度。
2012-08-17 09:13:41 3839
原创 《Python源码剖析》阅读笔记:第三章-字符串对象
第三章-字符串对象 字符串对象定义:typedef struct {PyObject_VAR_HEADlong ob_shash;int ob_sstate;char ob_sval[1];} PyStringObject;由于字符串是变长对象,所以有变长对象头。ob_shash用来缓存当前字符串的哈希值,这在以字符串作为key的dict对象查询时非常有用。
2012-08-17 09:12:37 2931
原创 《Python源码剖析》阅读笔记:第二章-整数对象
第二章-整数对象 整数对象定义:typedef struct { PyObject_HEAD long ob_ival;} PyIntObject;可以看到仅多了一个long域ob_ival来保存整数。之所以用long,是因为这里用long最高的符号位作为溢出标记位。整数对象内存管理机制:1. 小整数:在[ -NSMALLNEGI
2012-08-17 09:11:09 2589
原创 《Python源码剖析》阅读笔记:第一章-Python对象
第一章-Python对象 所有Python对象都直接或间接继承自PyObject,PyObject的定义很简单:struct _object {Py_ssize_t ob_refcnt; // 引用计数struct PyTypeObject *ob_type; // 类型对象指针} PyObject;引用计数决定对象的生存。当ob_refcnt为0时销毁对象
2012-08-17 09:07:43 2616
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人