`
phyeas
  • 浏览: 161612 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

读书杂记

阅读更多

1、Python源码剖析对应的版本为2.5。在py3k中第0章中所说的Objects/intobject.c文件实际上是不存在的,因为在py3k中没有int类型,对应的为long,由于long没有专门的long_print方法,所以例程可跳过

2、编译Python:第一次编译安装时需要执行make install,但以后每次修改之后不用每次install了,在生成了文件名为python的可执行文件后直接复制过去即可。

3、根据书中记载,python每次对象的引用减为0时调用“析构方法”,并把对象归还对象池,相对于jvm规范中的对象回收方法不一样,jvm中只有当对象真正在内存中析构时调用finalize方法。此时对象可以“原地复活”,复活后的对象再次析构时不再调用finalize方法。

4、py3k与书上的一点区别:

定义PyObject和PyVarObject时使用更清晰的:

typedef struct _object {
	_PyObject_HEAD_EXTRA
	Py_ssize_t ob_refcnt;
	struct _typeobject *ob_type;
} PyObject;

typedef struct {
	PyObject ob_base;
	Py_ssize_t ob_size; /* Number of items in variable part */
} PyVarObject;

 而非书上说的使用宏定义的模式,python2.5.4中的代码基本与书上一致

 

这里最大的区别应是PyVarObject中用PyObject ob_base;代替了原先的宏定义,即:原版本PyVarObject包含PyObject的全部属性,在py3k中PyVarObject则包含一个指向PyObject变量。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics