《Python源码剖析-深度探索动态语言核心技术》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:陈儒著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121068744
  • 页数:480 页
图书介绍:为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Python的运行原理都是非常重要的。本书以CPython为研究对象,在C代码一级,深入细致地剖析了Python的实现。本书不仅包括了对大量Python内置对象的剖析,更将大量的篇幅用于对Python虚拟机及Python高级特性的剖析。通过此书,读者能够透彻地理解Python中的一般表达式、控制结构、异常机制、类机制、多线程机制、模块的动态加载机制、内存管理机制等核心技术的运行原理,同时,本书所揭示的动态语言的核心技术对于理解其他动态语言,如Javascript、Ruby等也有较大的参考价值。

第0章Python源码剖析——编译Python 1

Python总体架构 1

Python源代码的组织 2

Windows环境下编译Python 4

Unix/Linux环境下编译Python 7

修改Python源代码 7

通往Python之路 9

一些注意事项 10

第1部分Python内建对象 13

第1章Python对象初探 15

Python内的对象 16

对象机制的基石——PyObject 17

定长对象和变长对象 18

类型对象 19

对象的创建 20

对象的行为 22

类型的类型 24

Python对象的多态性 25

引用计数 26

Python对象的分类 28

第2章Python中的整数对象 29

初识PyIntObject对象 29

PyIntObj ect对象的创建和维护 34

对象创建的3种途径 34

小整数对象 35

大整数对象 36

添加和删除 37

小整数对象池的初始化 43

Hack PyIntObject 44

第3章 Python中的字符串对象 47

PyStringObject与PyString_Type 47

创建PyStringObject对象 49

字符串对象的intern机制 52

字符缓冲池 56

PyStringObject效率相关问题 58

Hack PyStringObject 60

第4章 Python中的List对象 63

PyListObject对象 63

PyListObject对象的创建与维护 64

创建对象 64

设置元素 66

插入元素 68

删除元素 72

PyListObject对象缓冲池 74

Hack PyListObject 75

第5章 Python中的Dict对象 77

散列表概述 78

PyDictObject 79

关联容器的entry 79

关联容器的实现 80

PyDictObject的创建和维护 82

PyDictObject对象创建 82

PyDictObject中的元素搜索 83

插入与删除 89

操作示例 95

PyDictObject对象缓冲池 96

Hack PyDictObject 97

第6章 最简单的Python模拟——Small Python 101

Small Python 101

对象机制 102

解释过程 106

交互式环境 108

第2部分 Python虚拟机 111

第7章 Python的编译结果——Code对象与pyc文件 113

Python程序的执行过程 113

Python编译器的编译结果——PyCodeObject对象 115

PyCodeObject对象与pyc文件 115

Python源码中的PyCodeObject 116

pyc文件 117

在Python中访问PyCodeObj ect对象 120

Pyc文件的生成 120

创建pyc文件的具体过程 120

向pyc文件写入字符串 124

一个PyCodeObject,多个PyCodeObject 128

Python的字节码 129

解析pyc文件 130

第8章 Python虚拟机框架 133

Python虚拟机中的执行环境 133

Python源码中的PyFrameObject 136

PyFrameObject中的动态内存空间 138

在Python中访问PyFrameObject对象 139

名字、作用域和名字空间 140

Python程序的基础结构——module 140

约束与名字空间 141

作用域与名字空间 142

Python虚拟机的运行框架 149

Python运行时环境初探 152

第9章 Python虚拟机中的一般表达式 157

简单内建对象的创建 157

复杂内建对象的创建 163

其他一般表达式 166

符号搜索 166

数值运算 169

信息输出 171

第10章 Python虚拟机中的控制流 173

Python虚拟机中的if控制流 173

研究对象——if_control.py 173

比较操作 175

指令跳跃 179

Python虚拟机中的for循环控制流 183

研究对象——for_control.py 184

循环控制结构的初始化 184

迭代控制 188

终止迭代 191

Python虚拟机中的while循环控制结构 192

研究对象——while_control.py 192

循环终止 194

循环的正常运转 195

循环流程改变指令之continue 195

循环流程改变指令之break 196

Python虚拟机中的异常控制流 197

Python中的异常机制 197

Python中的异常控制语义结构 207

第11章 Python虚拟机中的函数机制 215

PyFunctionObject对象 215

无参函数调用 217

函数对象的创建 217

函数调用 220

函数执行时的名字空间 223

函数参数的实现 225

参数类别 226

位置参数的传递 229

位置参数的访问 233

位置参数的默认值 235

扩展位置参数和扩展键参数 243

函数中局部变量的访问 246

嵌套函数、闭包与decorator 248

实现闭包的基石 249

闭包的实现 251

Decorator 257

第12章 Python虚拟机中的类机制 259

Python中的对象模型 259

对象间的关系 260

<type‘type’>和<type‘object’> 262

从type对象到class对象 263

处理基类和rype信息 266

处理基类列表 267

填充tp_dict 268

用户自定义class 282

创建class对象 283

从class对象到instance对象 293

访问instance对象中的属性 296

instance对象中的__dict__ 298

再论descriptor 299

函数变身 302

无参函数的调用 304

带参函数的调用 307

Bound Method和Unbound Method 308

千变万化的descriptor 310

第3部分 Python高级话题 313

第13章 Python运行环境初始化 315

线程环境初始化 315

线程模型回顾 315

初始化线程环境 316

系统module初始化 320

创建__builtin__module 320

创建sys module 327

创建__main__module 330

设置site-specific的module的搜索路径 331

激活Python虚拟机 334

交互式运行方式 335

脚本文件运行方式 336

启动虚拟机 337

名字空间 339

第14章 Python模块的动态加载机制 343

import前奏曲 343

Python中import机制的黑盒探测 347

标准import 347

嵌套import 351

import package 352

from与import 356

符号重命名 358

符号的销毁与重载 359

import机制的实现 362

解析module/package树状结构 365

加载module/pakcage 370

from与import 381

Python中的import操作 382

import module 383

import package 383

from&import 383

import&as 384

reload 385

内建module.imp 386

与module有关的名字空间问题 386

第15章 Python多线程机制 391

GIL与线程调度 391

初见Python Thread 394

Python线程的创建 396

建立多线程环境 397

创建线程 402

Python线程的调度 413

标准调度 413

阻塞调度 416

Python子线程的销毁 419

Python线程的用户级互斥与同步 420

用户级互斥与同步 420

Lock对象 421

高级线程库——threading 423

Threading Module概述 424

Threading的线程同步工具 425

Threading中的Thread 426

第16章 Python的内存管理机制 429

内存管理架构 429

小块空间的内存池 432

Block 432

Pool 434

arena 438

内存池 442

循环引用的垃圾收集 457

引用计数与垃圾收集 457

三色标记模型 458

Python中的垃圾收集 459

可收集对象链表 460

分代的垃圾收集 463

Python中的标记—清除方法 466

垃圾收集全景 475

Python中的gc模块 477

总结 479