标题：Python 学习手册（第三版）
基本信息
原书名： Learning Python, 3rd Edition  原出版社： O'Reilly Media, Inc.
作者： （美）Mark Lutz 
译者： 侯靖
丛书名： 北京华章图文信息有限公司O'Reilly系列
出版社：机械工业出版社
ISBN：9787111267768
上架时间：2009-8-26
出版日期：2009 年8月
开本：16开
页码：656
版次：3-1
内容简介
python可移植、功能强大、易于使用，是编写独立应用程序和脚本应用程序的理想选择。无论你是刚接触编程或者刚接触python，通过学习本书，你可以迅速高效地精通核心python语言基础。读完本书，你会对这门语言有足够的了解，从而可以在你所从事的任何应用领域中使用它。.
本书是作者根据过去10年用于教学而广为人知的培训课程的材料编写而成的。除了有许多详实说明和每章小结之外，每章还包括一个头脑风暴：这是本书独特的一部分，配合以实用的练习题和复习题，让读者练习新学的技巧并测试自己的理解程度。
本书包括：
·类型和操作——深入讨论python主要的内置对象类型：数字、列表和字典等。
·语句和语法——在python中输入代码来建立并处理对象，以及python一般的语法模型。
·函数——python基本的面向过程工具，用于组织代码和重用。..
·模块——封装语句、函数以及其他工具，从而可以组织成较大的组件。
·类和oop——python可选的面向对象编程工具，可用于组织程序代码从而实现定制和重用。
·异常和工具——异常处理模型和语句，并介绍编写更大程序的开发工具。
·讨论python 3．0。
本书让你对python语言有深入而完整的了解，从而帮助你理解今后遇到的任何python应用程序实例。如果你准备探索google和youtube为什么选中了python，本书就是你入门的最佳指南。
本课程是Python编程语言的经典入门课程，Python是一种很流行的程序语言，可以作为独立的程序和脚本在各种领域中应用，Python免费、可移植、功能强大，而且使用起来相当容易。无论你是编程初学者，还是专业开发人员，通过学习本课程你可以快速掌握Python语言。 
作者简介
Mark Lutz是世界级的Python培训讲师。他是畅销Python书籍的作者，从1992年起，他就是Python社区的先锋。他也是《Programming Python》和《Python Pocket Reference》两本书的作者。从1997年起，Mark开始教授Python课程，截止到2007年，他开办了200个以上的Python短期培训课程。Mark拥有计算机科学学士和硕士学位，而且有25年的软件开发经验。
目录
[1]　前言. 1 
第一部分使用入门第1章问答环节. 19 
人们为何使用python 19 
软件质量20 
开发者效率21 
python 是“脚本语言”吗21 
好吧，python 的缺点是什么呢23 
如今谁在使用python 23 
使用python 可以做些什么24 
系统编程25 
用户图形接口25 
internet 脚本25 
组件集成26 
数据库编程26 
快速原型27 
数值计算和科学计算编程27 
游戏、图像、人工智能、xml 、机器人等27 
python 有哪些技术上的优点27 
面向对象28 
免费28 
.可移植28 
功能强大29 
可混合30 
使用简单31 
python 是工程，不是艺术31 
简单易学33 
名字来源于monty python33 
python 和其他语言比较起来怎么样33 
本章小结34 
头脑风暴35 
本章习题35 
习题解答35 
第2章python 如何运行程序. 37 
python 解释器简介37 
程序执行39 
程序员的视角39 
python 的视角40 
执行模块的变种42 
python 实现的替代者42 
执行优化工具44 
冻结二进制文件45 
未来的可能性46 
本章小结47 
头脑风暴48 
本章习题48 
习题解答48 
第3章如何运行程序 49 
交互模式下编写代码49 
在交互提示模式下测试代码51 
使用交互提示模式52 
系统命令行和文件52 
使用命令行和文件55 
unix 可执行脚本(#!) 56 
unix env 查找技巧57 
点击文件图标57 
在windows 中点击图标58 
raw_input 的技巧58 
图标点击的其他限制60 
模块导入和重载61 
模块的显要特性：属性62 
import 和reload 的使用注意事项65 
idle 用户界面66 
idle 基础66 
使用idle 68 
高级idle 工具70 
其他的ide70 
嵌入式调用71 
动付二进制的可执行性72 
文本编辑器启动的选择72 
其他的启动选择73 
未来的可能73 
我应该选用哪种73 
本章小结74.. 
头脑风暴75 
本章习题75 
习题解答75 
头脑风暴：第一部分练习题77 
第二部分类型和运算第4章介绍python 对象类型. 81 
为什么使用内置类型82 
python 的核心数据类型82 
数字84 
字符串85 
序列的操作85 
不可变性87 
类型特定的方法88 
寻求帮助89 
编写字符串的其他方法90 
模式匹配91 
列表91 
序列操作92 
类型特定的操作92 
边界检查93 
嵌套93 
列表解析94 
字典95 
映射操作95 
重访嵌套96 
键的排序：for 循环97 
迭代和优化99 
不存在的键：if 测试100 
元组101 
为什么要用元组101 
文件101 
其他文件类工具102 
其他核心类型103 
如何破坏代码的灵活性104 
用户定义的类104 
剩余的内容105 
本章小结106 
头脑风暴 107 
本章习题107 
习题解答107 
第5章数字 109 
python 的数字类型109 
数字常量109 
内置数学工具和扩展 111 
python 表达式操作符 112 
混合操作所遵循的操作符优先级. 113 
括号分组的子表达式 113 
混合类型自动升级 114 
预习：运算符重载 115 
在实际应用中的数字 115 
变量和基本的表达式 115 
数字显示的格式 117 
str 和repr 显示格式 118 
除法： 传统除法、floor 除法和真除法. 118 
位操作 119 
长整型数120 
复数121 
十六进制和八进制记数121 
其他的内置数学工具122 
其他数字类型123 
小数数字124 
集合125 
布尔型126 
第三方扩展127 
本章小结127 
头脑风暴 128 
本章习题128 
习题解答128 
第6章动态类型简介. 129 
缺少类型声明语句的情况129 
变量、对象和引用129 
类型属于对象，而不是变量131 
对象的垃圾收集132 
共享引用133 
共享引用和在原处修改135 
共享引用和相等136 
动态类型随处可见138 
本章小结138 
头脑风暴 139 
本章习题139 
习题解答139 
第7章字符串 140 
字符串常量141 
单双引号字符串是一样的142 
用转义序列代表特殊字节142 
字符串抑制转义145 
三重引号编写多行字符串块146 
字符串编码更大的字符集147 
实际应用中的字符串149 
基本操作149 
索引和分片151 
为什么要在意：分片154 
字符串转换工具154 
修改字符串157 
字符串格式化158 
更高级的字符串格式化159 
基于字典的字符串格式化160 
字符串方法161 
字符串方法实例：修改字符串162 
字符串方法实例：文本解析164 
实际应用中的其他常见字符串方法165 
最初的字符串模块166 
通常意义下的类型分类168 
同样分类的类型共享其操作集合168 
可变类型能够在原处修改168 
本章小结169 
头脑风暴 170 
本章习题170 
习题解答170 
第8章列表与字典. 171 
列表171 
实际应用中的列表174 
基本列表操作174 
索引、分片和矩阵174 
原处修改列表175 
字典179 
实际应用中的字典181 
字典的基本操作181 
原处修改字典182 
其他字典方法183 
语言表184 
字典用法注意事项185 
为什么要在意字典接口189 
本章小结189 
头脑风暴 190 
本章习题190 
习题解答190 
第9章元组、文件及其他 191 
元组191 
实际应用中的元组192 
为什么有了列表还要元组194 
文件195 
打开文件195 
使用文件196 
实际应用中的文件197 
其他文件工具201 
重访类型分类201 
为什么要在意操作符重载202 
对象灵活性202 
引用vs 拷贝204 
比较、相等性和真值206 
python 中真和假的含义207 
python 的类型层次209 
python 中的其他类型210 
内置类型陷阱210 
赋值生成引用，而不是拷贝210 
重复能够增加层次深度. 211 
留意循环数据结构212 
不可变类型不可以在原处改变212 
本章小结213 
头脑风暴 214 
本章习题214 
习题解答214 
头脑风暴：第二部分练习题215 
第三部分语句和语法第10 章python 语句简介. 221 
重访python 程序结构221 
python 的语句222 
两个if 的故事223 
python 增加了什么224 
python 删除了什么224 
终止行就是终止语句225 
为什么使用缩进语法226 
几个特殊实例228 
简短实例：交互循环230 
一个简单的交互式循环230 
对用户输入数据做数学运算231 
用测试输入数据来处理错误232 
用try 语句处理错误233 
嵌套代码三层234 
本章小结235 
头脑风暴 236 
本章习题236 
习题解答236 
第11 章赋值、表达式和打印 237 
赋值语句237 
赋值语句的形式238 
序列赋值239 
多目标赋值语句242 
增强赋值语句243 
变量命名规则245 
表达式语句248 
表达式语句和在原处的修改249 
打印语句249 
python 的“hello world ”程序250 
重定向输出流251 
print ]] file 扩展252 
本章小结253 
头脑风暴 255 
本章习题255 
习题解答255 
第12 章if 测试. 256 
if 语句256 
通用格式256 
基本例子257 
多路分支257 
python 语法规则259 
代码块分隔符260 
语句的分隔符261 
一些特殊情况262 
真值测试262 
if/else 三元表达式264 
为什么要在意布尔值266 
本章小结267 
头脑风暴 268 
本章习题268 
习题解答268 
第13 章while 和for 循环 269 
while 循环269 
一般格式269 
例子270 
break 、continue 、pass 和循环else 271 
一般循环格式271 
例子271 
为什么要在意“模拟c 语言的while 循环”275 
for 循环275 
一般格式276 
例子276 
为什么要在意“文件扫描”279 
迭代器：初探280 
文件迭代器281 
其他内置类型迭代器283 
其他迭代环境284 
用户定义的迭代器285 
编写循环的技巧285 
循环计数器：while 和range 286 
非完备遍历：range 287 
修改列表：range 288 
并行遍历：zip 和map289 
产生偏移和元素：enumerate 291 
列表解析：初探292 
列表解析基础293 
对文件使用列表解析294 
扩展列表解析语法295 
本章小结296 
头脑风暴 297 
本章习题297 
习题解答297 
第14 章文档 299 
python 文档资源299 
#注释300 
dir 函数300 
文档字符串：__doc__ 301 
pydoc：help 函数304 
pydoc：html 报表306 
标准手册集309 
网络资源310 
已出版的书籍. 311 
常见编写代码的陷阱 311 
本章小结313 
头脑风暴 314 
本章习题314 
习题解答314 
头脑风暴：第三部分练习题315 
第四部分函数第15 章函数基础 319 
为何使用函数320 
编写函数320 
def 语句322 
def 语句是实时执行的322 
第一个例子：定义和调用323 
定义323 
调用324 
python 中的多态324 
第二个例子：寻找序列的交集325 
定义326 
调用326 
重访多态327 
本地变量328 
本章小结328 
头脑风暴 329 
本章习题329 
习题解答329 
第16 章作用域和参数 330 
作用域法则330 
函数作用域基础331 
变量名解析：legb 原则332 
作用域实例334 
内置作用域334 
global 语句336 
最小化全局变量337 
最小化文件间的修改338 
其他访问全局变量的方法339 
作用域和嵌套函数340 
嵌套作用域的细节341 
嵌套作用域举例341 
传递参数347 
参数和共享引用348 
避免可变参数的修改349 
对参数输出进行模拟350 
特定的参数匹配模型351 
关键字参数和默认参数的实例352 
任意参数的实例354 
关键字参数和默认参数的混合356 
min 调用357 
一个更有用的例子：通用set 函数359 
参数匹配：细节360 
为什么要在意：关键字参数361 
本章小结362 
头脑风暴 363 
本章习题363 
习题解答364 
第17 章函数的高级话题. 365 
匿名函数：lambda365 
lambda 表达式365 
为什么使用lambda 367 
如何（不要）让python 代码变得晦涩难懂368 
嵌套lambda 和作用域369 
作为参数来应用函数370 
内置函数apply370 
为什么要在意：回调371 
传入关键字参数372 
和apply 类似的调用语法372 
在序列中映射函数：map 373 
函数式编程工具：filter 和reduce 374 
重访列表解析：映射376 
列表解析基础376 
增加测试和嵌套循环377 
列表解析和矩阵380 
理解列表解析381 
为什么要在意：列表解析和map 382 
重访迭代器：生成器383 
生成器函数实例383 
扩展生成器函数协议：send 和next385 
迭代器和内置类型386 
生成器表达式：迭代器遇到列表解析387 
对迭代的各种方法进行计时388 
函数设计概念390 
函数是对象：简洁调用392 
函数陷阱393 
本地变量是静态检测的393 
默认和可变对象395 
没有return 语句的函数396 
嵌套作用域的循环变量397 
本章小结397 
头脑风暴 398 
本章习题398 
习题解答398 
头脑风暴：第四部分练习题400 
第五部分模块第18 章模块：宏伟蓝图. 405 
为什么使用模块405 
python 程序构架406 
如何组织一个程序407 
导入和属性407 
标准库模块409 
import 如何工作409 
搜索410 
编译（可选）414 
运行414 
第三方工具：distutils 415 
本章小结415 
头脑风暴 417 
本章习题417 
习题解答417 
第19 章模块代码编写基础. 418 
模块的创建418 
模块的使用419 
import 语句419 
from 语句420 
from * 语句420 
导入只发生一次420 
import 和from 是赋值语句421 
文件间变量名的改变422 
import 和from 的对等性422 
from 语句潜在的陷阱423 
模块命名空间425 
文件生成命名空间425 
属性名的点号运算427 
导入和作用域427 
命名空间的嵌套428 
重载模块429 
reload 基础430 
reload 实例431 
为什么要在意：模块重载432 
本章小结432 
头脑风暴 434 
本章习题434 
习题解答434 
第20 章模块包 435 
包导入基础435 
包和搜索路径设置436 
__init__.py 包文件436 
包导入实例438 
包对应的from 和import439 
为什么要使用包导入440 
三个系统的传说441 
为什么要在意：模块包443 
本章小结443 
头脑风暴 445 
本章习题445 
习题解答445 
第21 章高级模块话题 446 
在模块中隐藏数据446 
最小化from * 的破坏：_x 和__all__. 446 
启用以后的语言特性447 
混合用法模式：__name__ 和__main__ 447 
以__name__ 进行单元测试448 
修改模块搜索路径450 
import as 扩展451 
相对导入语法451 
为什么使用相对导入452 
模块设计理念454 
模块是对象：元程序455 
模块陷阱457 
顶层代码的语句次序的重要性457 
通过变量名字符串导入模块458 
from 复制变量名，而不是连接459 
from * 会让变量语义模糊460 
reload 不会影响from 导入460 
reload 、from 以及交互模式测试461 
reload 的使用没有传递性462 
递归形式的from import 无法工作463 
本章小结464 
头脑风暴 465 
本章习题465 
习题解答465 
头脑风暴：第五部分练习题466 
第六部分类和oop 第22 章oop ：宏伟蓝图 471 
为何使用类472 
概览oop473 
属性继承搜索473 
类和实例475 
类方法调用476 
编写类树476 
oop 是为了代码重用479 
本章小结481 
头脑风暴 483 
本章习题483 
习题解答483 
第23 章类代码编写基础. 485 
类产生多个实例对象485 
类对象提供默认行为486 
实例对象是具体的元素486 
第一个例子486 
类通过继承进行定制489 
第二个例子489 
类是模块内的属性491 
类可以截获python 运算符492 
第三个例子493 
为什么要使用运算符重载494 
世界上最简单的python 类495 
本章小结497 
头脑风暴 499 
本章习题499 
习题解答499 
第24 章类代码编写细节. 501 
class 语句501 
一般形式501 
例子502 
方法504 
例子505 
调用超类的构造器506 
其他方法调用的可能性506 
继承507 
属性树的构造507 
继承方法的专有化508 
类接口技术509 
抽象超类510 
运算符重载 511 
常见的运算符重载方法512 
__getitem__ 拦截索引运算513 
__getitem__ 和__iter__ 实现迭代513 
用户定义的迭代器514 
__getattr__ 和__setattr__ 捕捉属性的引用518 
模拟实例属性的私有性520 
__repr__ 和__str__ 会返回字符串表达形式520 
__radd__ 处理右侧加法522 
__call__ 拦截调用523 
函数接口和回调代码523 
__del__ 是析构器525 
命名空间：完整的内容526 
简单变量名：如果赋值就不是全局变量526 
属性名称：对象命名空间527 
python 命名空间的“禅”：赋值将变量名分类527 
命名空间字典529 
命名空间链接531 
一个更实际的例子533 
本章小结536 
头脑风暴 537 
本章习题537 
习题解答537 
第25 章类的设计 539 
python 和oop 539 
通过调用标记进行重载（或不要）540 
类作为记录540 
类和继承：“是一个”关系542 
类和组合：“有一个”关系544 
重访流处理器545 
为什么要在意：类和持续性548 
oop 和委托548 
多重继承549 
类是对象：通用对象的工厂552 
为什么有工厂554 
方法是对象：绑定或无绑定554 
重访文档字符串556 
为什么要在意：绑定方法和回调函数557 
类和模块558 
本章小结558 
头脑风暴 559 
本章习题559 
习题解答559 
第26 章类的高级主题 560 
扩展内置类型560 
通过嵌入扩展类型560 
通过子类扩展类型561 
类的伪私有属性563 
变量名压缩概览564 
为什么使用伪私有属性564 
新式类566 
钻石继承变动567 
其他新式类的扩展570 
静态和类方法573 
使用静态和类方法575 
函数装饰器576 
装饰器例子578 
类陷阱579 
修改类属性的副作用579 
多重继承：顺序很重要580 
类、方法以及嵌套作用域581 
“过度包装”583 
本章小结584 
头脑风暴 585 
本章习题585 
习题解答585 
头脑风暴：第六部分练习题586 
第七部分异常和工具第27 章异常基础 595 
为什么使用异常596 
异常的角色596 
异常处理：简明扼要597 
try/except/else 语句601 
try 语句分句602 
try/else 分句604 
例子：默认行为605 
例子：捕捉内置异常606 
try/finally 语句607 
例子：利用try/finally 编写终止行为608 
统一try/except/finally 609 
通过嵌套合并finally 和except610 
合并try 的例子 611 
raise 语句612 
例子：引发并捕捉用户定义的异常613 
例子：利用raise 传入额外的数据613 
例子：利用raise 传递异常614 
assert 语句614 
例子：收集约束条件（但不是错误）615 
with/as 环境管理器616 
基本使用616 
环境管理协议617 
为什么要在意：错误检查618 
本章小结620 
头脑风暴 621 
本章习题621 
习题解答621 
第28 章异常对象 622 
基于字符串的异常623 
字符串异常就要出局了623 
基于类的异常624 
类异常例子624 
为什么使用类异常626 
内置exception 类629 
定义异常文本630 
发送额外数据和实例行为631 
raise 语句的一般形式633 
本章小结634 
头脑风暴 636 
本章习题636 
习题解答636 
第29 章异常的设计 637 
嵌套异常处理器637 
例子：控制流程嵌套638 
例子：语法嵌套化639 
异常的习惯用法641 
异常不总是错误641 
函数信号条件和raise641 
在try 外进行调试642 
运行进程中的测试643 
关于sys.exc_info 644 
与异常有关的技巧644 
应该包装什么644 
捕捉太多：避免空except 语句645 
捕捉过少：使用基于类的分类647 
异常陷阱647 
字符串异常匹配是通过同一性而不是通过值648 
捕捉到错误的异常649 
核心语言总结649 
python 工具集650 
大型项目的开发工具651 
本章小结653 
头脑风暴 655 
本章习题655 
习题解答655 
头脑风暴：第七部分练习题656 
第八部分附录 
附录a 安装和配置 
附录b 每部分练习题解答