本文由我司收集整编,推荐下载,如有疑问,请与我司联系
Python
源码学习笔记(
1
基本数据类型)
2014/09/16
0
分类:
python
编程
C
blog.csdn/mayao11/article/details/74264842012-04-04 21:06155
人阅读评论
(0)
收藏举报
pythonlistimmutable
语言
string
算法
Python
源码剖析
这本书相当好。我用
Python
也
有几个月时间了,这时候读
Python
源码,会对提高
C
语言水平、
Python
水平、算
法基础都有相当的帮助。我目前只看了最前面的数据类型基础,也就是网上可以下
载到的:
Python
源码剖析
.chm
这个文件。学习心得嘛,就是多看多想,有问题的时
候再调试
Python
源码验证想法。欢迎留言交流。衷心的感谢《
Python
源码剖析》作
者
Robert
Chen(search.pythoner@gmail)Chapter
1.
PyObject
对象大小一旦创建就不变
了
PyObject{Py_ssize_t
ob_refcnt;struct
_typeobject
*ob_type;}PyVarObject{Py_ssize_t
ob_refcnt;struct
_typeobject
*ob_type;Py_ssize_t
ob_size;//
元素个数
}
★
内存空间大小
一定和对象类型有关
typedef
struct
_typeobject
{PyObject_VAR_HEADconst
char
*tp_name;Py_ssize_t
tp_basicsize,
tp_itemsize;struct
PyMethodDef
*tp_methods;struct
PyMemberDef
*tp_members;struct
PyGetSetDef
*tp_getset;struct
_typeobject
*tp_base;PyObject
*tp_dict;}PyTypeObject
的类型是用自身定义的?
PyTypeObject
PyType_Type
=
{PyVarObject_HEAD_INIT(
PyType_Type,
0)}
★
C
语言实现多态只
需要多加一个结构体
ob_type
,把
ob_type*
组合进去即可?指向类型对象的指针不会
增加类型对象的引用计数。此设计方法在
C
语言中用处颇大,参考云风相关博文
《我所偏爱的
C
语言面向对象编程范式》
blog.codingnow/2010/03/object_oriented_programming_in_c.html
但是云风的文章写的
不明不白,互相印证一下就
ok
了。
Chapter 2. PyIntObj
最有特色的地方有两处:
1
、
小整数特殊处理,永远只存在一份
2
、用多个链表管理所有整数,可以看作特制的
内存分配器。最神奇的是删除某个整数对象时的行为。此章有意思的地方是链表使
用时的灵活技巧,很有意思。
Chapter 3. PyStringObjPyStringObj
是一种
immutable
对
象,内容不可变。这和能做
Key
有关系吗?
Intern
机制
void
PyString_InternInPlace(PyObject
**p){register
PyStringObject
*s
=
(PyStringObject