1. PyStringObject --> 变长不可变对象
typedef struct{
PyObject_VAR_HEAD//ob_size变量保存着对象中维护的可变长度内存的大小
longob_shash; //缓存该对象的hash值,用于dict的查询
intob_sstate; //标志该对象是否经过intern机制的处理
char ob_sval[1];// 字符指针,指向一段内存
} PyStri...
分类:
编程语言 时间:
2014-06-14 17:30:48
阅读次数:
309
1. PyIntObject --> long的一个简单包装
typedef struct{
PyObject_HEAD
long ob_ival;
} PyIntObject;
PyInt_Type --> PyIntObject的类型对象。与对象相关的元信息实际上都是保存在与对象对应的类型对象中的
PyTypeObject PyInt_Type = {
PyObject_HEAD_INIT(&PyType_Type)
0,
“int”,
//…
}
PyIntObject 所...
分类:
编程语言 时间:
2014-06-14 10:42:19
阅读次数:
313
由于python中的整数对象记录的整数值是不可变的,所以在名字a的值不断变化的过程中,就就涉及到了多次对象的创建和销毁。所以python为整数对象申请空间进行了两种优化:
优化1:为通用整数对象存储池
优化2:为小整数对象构建特殊的缓冲
PyIntObject分为小整数对象[-5~257)及大整数对象。小整数对象在py启动过程中初始化,从而实现小整数对象的缓存,缓冲中的小整数对象在py运行期间不会被销毁。 大整数对象需要程序员动态申请,对象在运行过程中根据ob_refcnt引...
分类:
编程语言 时间:
2014-05-09 06:24:38
阅读次数:
383
python是面向对象的解释性语言,然而python是通过C语言实现的,C语言怎么跟面向对象扯上了关系? C语言可以实现面向对象的性质?...
分类:
编程语言 时间:
2014-05-08 17:14:42
阅读次数:
418