相关截图:
资料简介:
作为主流的动态语言,Python不仅简单易学、移植性好,而且拥有强大丰富的库的支持。此外,Python强大的可扩展性,让开发人员既可以非常容易地利用C/C++编写Python的扩展模块,还能将Python嵌入到C/C++程序中,为自己的系统添加动态扩展和动态编程的能力。 为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Python的运行原理都是非常重要的。本书以CPython为研究对象,在C代码一级,深入细致地剖析了Python的实现。书中不仅包括了对大量Python内置对象的剖析,更将大量的篇幅用于对Python虚拟机及Python高级特性的剖析。通过此书,读者能够透彻地理解Python中的一般表达式、控制结构、异常机制、类机制、多线程机制、模块的动态加载机制、内存管理机制等核心技术的运行原理,同时,本书所揭示的动态语言的核心技术对于理解其他动态语言,如Java*、Ruby等也有较大的参考价值。 本书适合于Python程序员、动态语言爱好者、C程序员阅读
资料目录:
第0章PYTHON源码剖析--编译PYTHON0.1PYTHON总体架构0.2PYTHON源代码的组织0.3WINDOWS环境下编译PYTHON0.4UNIX/LINUX环境下编译PYTHON0.5修改PYTHON源代码0.6通往PYTHON之路0.7一些注意事项第1部分PYTHON内建对象第1章PYTHON对象初探1.1PYTHON内的对象1.1.1对象机制的基石——PyObject1.1.2定长对象和变长对象1.2类型对象1.2.1对象的创建1.2.2对象的行为1.2.3类型的类型1.3PYTHON对象的多态性1.4引用计数1.5PYTHON对象的分类第2章PYTHON中的整数对象2.1初识PYINTOBJECT对象2.2PYINTOBJECT对象的创建和维护2.2.1对象创建的3种途径2.2.2小整数对象2.2.3大整数对象2.2.4添加和删除2.2.5小整数对象池的初始化2.3HACKPYINTOBJECT第3章PYTHON中的字符串对象3.1PYSTRINGOBJECT与PYSTRING_TYPE3.2创建PYSTRINGOBJECT对象3.3字符串对象的INTERN机制3.4字符缓冲池3.5PYSTRINGOBJECT效率相关问题3.6HACKPYSTRINGOBJECT第4章PYTHON中的LIST对象4.1PYLISTOBJECT对象4.2PYLISTOBJECT对象的创建与维护4.2.1创建对象4.2.2设置元素4.2.3插入元素4.2.4删除元素4.3PYLISTOBJECT对象缓冲池4.4HACKPYLISTOBJECT第5章PYTHON中的DICT对象5.1散列表概述5.2PYDICTOBJECT5.2.1关联容器的entry5.2.2关联容器的实现5.3PYDICTOBJECT的创建和维护5.3.1PyDictObject对象创建5.3.2PyDictObject中的元素搜索5.3.3插入与删除5.3.4操作示例5.4PYDICTOBJECT对象缓冲池5.5HACKPYDICTOBJECT第6章最简单的PYTHON模拟——SMALLPYTHON6.1SMALLPYTHON6.2对象机制6.3解释过程6.4交互式环境第2部分PYTHON虚拟机第7章PYTHON的编译结果--CODE对象与PYC文件7.1PYTHON程序的执行过程7.2PYTHON编译器的编译结果--PYCODEOBJECT对象7.2.1PyCodeObject对象与pyc文件7.2.2Python源码中的PyCodeObject7.2.3pyc文件7.2.4在Python中访问PyCodeObject对象7.3PYC文件的生成7.3.1创建pyc文件的具体过程7.3.2向pyc文件写入字符串7.3.3一个PyCodeObject,多个PyCodeObject7.4PYTHON的字节码7.5解析PYC文件第8章PYTHON虚拟机框架8.1PYTHON虚拟机中的执行环境8.1.1Python源码中的PyFrameObject8.1.2PyFrameObject中的动态内存空间8.1.3在Python中访问PyFrameObject对象8.2名字、作用域和名字空间8.2.1Python程序的基础结构——module8.2.2约束与名字空间8.2.3作用域与名字空间8.3PYTHON虚拟机的运行框架8.4PYTHON运行时环境初探第9章PYTHON虚拟机中的一般表达式9.1简单内建对象的创建9.2复杂内建对象的创建9.3其他一般表达式9.3.1符号搜索9.3.2数值运算9.3.3信息输出第10章PYTHON虚拟机中的控制流10.1PYTHON虚拟机中的IF控制流10.1.1研究对象--if_control.py10.1.2比较操作10.1.3指令跳跃10.2PYTHON虚拟机中的FOR循环控制流10.2.1研究对象——for_control.py10.2.2循环控制结构的初始化10.2.3迭代控制10.2.4终止迭代10.3PYTHON虚拟机中的WHILE循环控制结构10.3.1研究对象——while_control.py10.3.2循环终止10.3.3循环的正常运转10.3.4循环流程改变指令之continue10.3.5循环流程改变指令之break10.4PYTHON虚拟机中的异常控制流10.4.1Python中的异常机制10.4.2Python中的异常控制语义结构第11章PYTHON虚拟机中的函数机制11.1PYFUNCTIONOBJECT对象11.2无参函数调用11.2.1函数对象的创建11.2.2函数调用11.3函数执行时的名字空间11.4函数参数的实现11.4.1参数类别11.4.2位置参数的传递11.4.3位置参数的访问11.4.4位置参数的默认值11.4.5扩展位置参数和扩展键参数11.5函数中局部变量的访问11.6嵌套函数、闭包与DECORATOR11.6.1实现闭包的基石11.6.2闭包的实现11.6.3Decorator第12章PYTHON虚拟机中的类机制12.1PYTHON中的对象模型12.1.1对象间的关系12.1.2和12.2从TYPE对象到CLASS对象12.2.1处理基类和type信息12.2.2处理基类列表12.2.3填充tp_dict12.3用户自定义CLASS12.3.1创建class对象12.4从CLASS对象到INSTANCE对象12.5访问INSTANCE对象中的属性12.5.1instance对象中的__dict__12.5.2再论de*or12.5.3函数变身12.5.4无参函数的调用12.5.5带参函数的调用12.5.6BoundMethod和UnboundMethod12.6千变万化的DESCRIPTOR第3部分PYTHON高级话题第13章PYTHON运行环境初始化13.1线程环境初始化13.1.1线程模型回顾13.1.2初始化线程环境13.2系统MODULE初始化13.2.1创建__builtin__module13.2.2创建sysmodule13.2.3创建__main__module13.2.4设置site-specific的module的搜索路径13.3激活PYTHON虚拟机13.3.1交互式运行方式13.3.2脚本文件运行方式13.3.3启动虚拟机13.3.4名字空间第14章PYTHON模块的动态加载机制14.1IMPORT前奏曲14.2PYTHON中IMPORT机制的黑盒探测14.2.1标准import14.2.2嵌套import14.2.3importpackage14.2.4from与import14.2.5符号重命名14.2.6符号的销毁与重载14.3IMPORT机制的实现14.3.1解析module/package树状结构14.3.2加载module/pakcage14.3.3from与import14.4PYTHON中的IMPORT操作14.4.1importmodule14.4.2importpackage14.4.3from&import14.4.4import&as14.4.5reload14.4.6内建module:imp14.5与MODULE有关的名字空间问题第15章PYTHON多线程机制15.1GIL与线程调度15.2初见PYTHONTHREAD15.3PYTHON线程的创建15.3.1建立多线程环境15.3.2创建线程15.4PYTHON线程的调度15.4.1标准调度15.4.2阻塞调度15.5PYTHON子线程的销毁15.6PYTHON线程的用户级互斥与同步15.6.1用户级互斥与同步15.6.2Lock对象15.7高级线程库——THREADING15.7.1ThreadingModule概述15.7.2Threading的线程同步工具15.7.3Threading中的Thread第16章PYTHON的内存管理机制16.1内存管理架构16.2小块空间的内存池16.2.1Block16.2.2Pool16.2.3arena16.2.4内存池16.3循环引用的垃圾收集16.3.1引用计数与垃圾收集16.3.2三色标记模型16.4PYTHON中的垃圾收集16.4.1可收集对象链表16.4.2分代的垃圾收集16.4.3Python中的标记-清除方法16.4.4垃圾收集全景16.4.5Python中的gc模块16.4.6总结