Python学习手册(第4版)
Mark Lutz
李军, 刘红伟 等译
出版时间:2011年03月
页数:1129
Google和YouTube由于Python的高可适应性、易于维护以及适合于快速开发而采用它。本书将帮助你使用Python编写出高质量、高效的并且易于与其他语言和工具集成的代码。本书根据Python专家Mark Lutz的著名培训课程编写而成,是易于掌握和自学的Python教程。
本书每一章都对Python语言的关键内容做单独讲解,并且配有章首习题,便于你学习新的技能并巩固加深自己的理解。书中配有大量注释的示例以及图表,它们都将帮助你轻松地学习Python 3.0。
本书主要内容:
· 学习Python的主要内建对象类型:数字、列表和字典。
· 使用Python语句创建和处理对象,并且学习Python的通用语法模型。
· 使用函数构造和重用代码,函数是Python的基本过程工具。
· 学习Python模块:封装语句、函数以及其他工具,以便构建较大的组件。
· 学习Python的面向对象编程工具,用于组织程序代码。
· 学习异常处理模型,以及用于编写较大程序的开发工具。
· 了解高级Python工具,如装饰器、描述器、元类和Unicode处理等。

  1. 前言
  2. 第一部分 使用入门
  3. 第1章 问答环节
  4. 人们为何使用Python
  5. 软件质量
  6. 开发效率
  7. Python是“脚本语言”吗
  8. 好吧,Python的缺点是什么呢
  9. 如今谁在使用Python
  10. 使用Python可以做些什么
  11. 系统编程
  12. 用户图形接口
  13. Internet脚本
  14. 组件集成
  15. 数据库编程
  16. 快速原型
  17. 数值计算和科学计算编程
  18. 游戏、图像、人工智能、XML、机器人等
  19. Python如何获得支持
  20. Python有哪些技术上的优点
  21. 面向对象
  22. 免费
  23. 可移植
  24. 功能强大
  25. 可混合
  26. 简单易用
  27. 简单易学
  28. Python和其他语言比较起来怎么样
  29. 本章小结
  30. 本章习题
  31. 习题解答
  32. Python是工程,不是艺术
  33. 第2章 Python如何运行程序
  34. Python解释器简介
  35. 程序执行
  36. 程序员的视角
  37. Python的视角
  38. 执行模块的变体
  39. Python实现的替代者
  40. 执行优化工具
  41. 冻结二进制文件
  42. 其他执行选项
  43. 未来的可能性
  44. 本章小结
  45. 本章习题
  46. 习题解答
  47. 第3章 如何运行程序
  48. 交互提示模式下编写代码
  49. 交互地运行代码
  50. 为什么使用交互提示模式
  51. 使用交互提示模式
  52. 系统命令行和文件
  53. 第一段脚本
  54. 使用命令行运行文件
  55. 使用命令行和文件
  56. UNIX可执行脚本(#!)
  57. UNIX env查找技巧
  58. 点击文件图标
  59. 在Windows中点击图标
  60. input的技巧
  61. 图标点击的其他限制
  62. 模块导入和重载
  63. 模块的显要特性:属性
  64. import和reload的使用注意事项
  65. 使用exec运行模块文件
  66. IDLE用户界面
  67. IDLE基础
  68. 使用IDLE
  69. 高级IDLE工具
  70. 其他的IDE
  71. 其他启动选项
  72. 嵌入式调用
  73. 冻结二进制的可执行性
  74. 文本编辑器启动的选择
  75. 其他的启动选择
  76. 未来的可能
  77. 我应该选用哪种
  78. 调试Python代码
  79. 本章小结
  80. 本章习题
  81. 习题解答
  82. 第一部分 练习题
  83. 第二部分 类型和运算
  84. 第4章 介绍Python对象类型
  85. 为什么使用内置类型
  86. Python的核心数据类型
  87. 数字
  88. 字符串
  89. 序列的操作
  90. 不可变性
  91. 类型特定的方法
  92. 寻求帮助
  93. 编写字符串的其他方法
  94. 模式匹配
  95. 列表
  96. 序列操作
  97. 类型特定的操作
  98. 边界检查
  99. 嵌套
  100. 列表解析
  101. 字典
  102. 映射操作
  103. 重访嵌套
  104. 键的排序:for循环
  105. 迭代和优化
  106. 不存在的键:if测试
  107. 元组
  108. 为什么要用元组
  109. 文件
  110. 其他文件类工具
  111. 其他核心类型
  112. 如何破坏代码的灵活性
  113. 用户定义的类
  114. 剩余的内容
  115. 本章小结
  116. 本章习题
  117. 习题解答
  118. 第5章 数字
  119. Python的数字类型
  120. 数字常量
  121. 内置数学工具和扩展
  122. Python表达式操作符
  123. 在实际应用中的数字
  124. 变量和基本的表达式
  125. 数字显示的格式
  126. 比较:一般的和连续的
  127. str和repr显示格式
  128. 除法: 传统除法、Floor除法和真除法
  129. 整数精度
  130. 复数
  131. 十六进制、八进制和二进制记数
  132. 位操作
  133. 其他的内置数学工具
  134. 其他数字类型
  135. 小数数字
  136. 分数类型
  137. 集合
  138. 布尔型
  139. 数字扩展
  140. 本章小结
  141. 本章习题
  142. 习题解答
  143. 第6章 动态类型简介
  144. 缺少类型声明语句的情况
  145. 变量、对象和引用
  146. 类型属于对象,而不是变量
  147. 对象的垃圾收集
  148. 共享引用
  149. 共享引用和在原处修改
  150. 共享引用和相等
  151. 动态类型随处可见
  152. 本章小结
  153. 本章习题
  154. 习题解答
  155. 第7章 字符串
  156. 字符串常量
  157. 单双引号字符串是一样的
  158. 用转义序列代表特殊字节
  159. raw字符串抑制转义
  160. 三重引号编写多行字符串块
  161. 实际应用中的字符串
  162. 基本操作
  163. 索引和分片
  164. 为什么要在意:分片
  165. 字符串转换工具
  166. 修改字符串
  167. 字符串方法
  168. 字符串方法实例:修改字符串
  169. 字符串方法实例:文本解析
  170. 实际应用中的其他常见字符串方法
  171. 最初的字符串模块(在Python 3.0中删除)
  172. 字符串格式化表达式
  173. 更高级的字符串格式化表达式
  174. 基于字典的字符串格式化
  175. 字符串格式化调用方法
  176. 基础知识
  177. 添加键、属性和偏移量
  178. 添加具体格式化
  179. 与%格式化表达式比较
  180. 为什么用新的格式化方法
  181. 通常意义下的类型分类
  182. 同样分类的类型共享其操作集合
  183. 可变类型能够在原处修改
  184. 本章小结
  185. 本章习题
  186. 习题解答
  187. 第8章 列表与字典
  188. 列表
  189. 实际应用中的列表
  190. 基本列表操作
  191. 列表迭代和解析
  192. 索引、分片和矩阵
  193. 原处修改列表
  194. 字典
  195. 实际应用中的字典
  196. 字典的基本操作
  197. 原处修改字典
  198. 其他字典方法
  199. 语言表
  200. 字典用法注意事项
  201. 为什么要在意字典接口
  202. 创建字典的其他方法
  203. Python 3.0中的字典变化
  204. 本章小结
  205. 本章习题
  206. 习题解答
  207. 第9章 元组、文件及其他
  208. 元组
  209. 实际应用中的元组
  210. 为什么有了列表还要元组
  211. 文件
  212. 打开文件
  213. 使用文件
  214. 实际应用中的文件
  215. 其他文件工具
  216. 重访类型分类
  217. 为什么要在意操作符重载
  218. 对象灵活性
  219. 引用 VS 拷贝
  220. 比较、相等性和真值
  221. Python 3.0的字典比较
  222. Python中真和假的含义
  223. Python的类型层次
  224. Type对象
  225. Python中的其他类型
  226. 内置类型陷阱
  227. 赋值生成引用,而不是拷贝
  228. 重复能够增加层次深度
  229. 留意循环数据结构
  230. 不可变类型不可以在原处改变
  231. 本章小结
  232. 本章习题
  233. 习题解答
  234. 第二部分练习题
  235. 第三部分 语句和语法
  236. 第10章 Python语句简介
  237. 重访Python程序结构
  238. Python的语句
  239. 两个if的故事
  240. Python增加了什么
  241. Python删除了什么
  242. 为什么使用缩进语法
  243. 几个特殊实例
  244. 简短实例:交互循环
  245. 一个简单的交互式循环
  246. 对用户输入数据做数学运算
  247. 用测试输入数据来处理错误
  248. 用try语句处理错误
  249. 嵌套代码三层
  250. 本章小结
  251. 本章习题
  252. 习题解答
  253. 第11章 赋值、表达式和打印
  254. 赋值语句
  255. 赋值语句的形式
  256. 序列赋值
  257. Python 3.0中的扩展序列解包
  258. 多目标赋值语句
  259. 增强赋值语句
  260. 变量命名规则
  261. Python的废弃协议
  262. 表达式语句
  263. 表达式语句和在原处的修改
  264. 打印操作
  265. Python 3.0的print函数
  266. Python 2.6 print语句
  267. 打印流重定向
  268. 版本独立的打印
  269. 为什么要注意print和stdout
  270. 本章小结
  271. 本章习题
  272. 习题解答
  273. 第12章 if测试和语法规则
  274. if语句
  275. 通用格式
  276. 基本例子
  277. 多路分支
  278. Python语法规则
  279. 代码块分隔符
  280. 语句的分隔符
  281. 一些特殊情况
  282. 真值测试
  283. if/else三元表达式
  284. 为什么要在意布尔值
  285. 本章小结
  286. 本章习题
  287. 习题解答
  288. 第13章 while和for循环
  289. while循环
  290. 一般格式
  291. 例子
  292. break、continue、pass和循环else
  293. 一般循环格式
  294. pass
  295. continue
  296. break
  297. 循环else
  298. 为什么要在意“模拟C语言的while循环”
  299. for循环
  300. 一般格式
  301. 例子
  302. 为什么要在意“文件扫描”
  303. 编写循环的技巧
  304. 循环计数器:while和range
  305. 非完备遍历:range和分片
  306. 修改列表:range
  307. 并行遍历:zip和map
  308. 产生偏移和元素:enumerate
  309. 本章小结
  310. 本章习题
  311. 习题解答
  312. 第14章 迭代器和解析,第一部分
  313. 迭代器:初探
  314. 文件迭代器
  315. 手动迭代:iter和next
  316. 其他内置类型迭代器
  317. 列表解析:初探
  318. 列表解析基础知识
  319. 在文件上使用列表解析
  320. 扩展的列表解析语法
  321. 其他迭代环境
  322. Python 3.0中的新的可迭代对象
  323. range迭代器
  324. map、zip和filter迭代器
  325. 多个迭代器 VS单个迭代器
  326. 字典视图迭代器
  327. 其他迭代器主题
  328. 本章小结
  329. 本章习题
  330. 习题解答
  331. 第15章 文档
  332. Python文档资源
  333. #注释
  334. dir函数
  335. 文档字符串:__doc__
  336. PyDoc:help函数
  337. PyDoc:HTML报表
  338. 标准手册集
  339. 网络资源
  340. 已出版的书籍
  341. 常见编写代码的陷阱
  342. 本章小结
  343. 本章习题
  344. 习题解答
  345. 第三部分练习题
  346. 第四部分 函数
  347. 第16章 函数基础
  348. 为何使用函数
  349. 编写函数
  350. def语句
  351. def语句是实时执行的
  352. 第一个例子:定义和调用
  353. 定义
  354. 调用
  355. Python中的多态
  356. 第二个例子:寻找序列的交集
  357. 定义
  358. 调用
  359. 重访多态
  360. 本地变量
  361. 本章小结
  362. 本章习题
  363. 习题解答
  364. 第17章 作用域
  365. Python作用域基础
  366. 作用域法则
  367. 变量名解析:LEGB原则
  368. 作用域实例 419
  369. 内置作用域 420
  370. 在Python 2.6中违反通用性
  371. global语句
  372. 最小化全局变量
  373. 最小化文件间的修改
  374. 其他访问全局变量的方法
  375. 作用域和嵌套函数
  376. 嵌套作用域的细节
  377. 嵌套作用域举例
  378. nonlocal语句
  379. nonlocal基础
  380. nonlocal应用
  381. 为什么使用nonlocal
  382. 本章小结
  383. 本章习题
  384. 习题解答
  385. 第18章 参数
  386. 传递参数
  387. 参数和共享引用
  388. 避免可变参数的修改
  389. 对参数输出进行模拟
  390. 特定的参数匹配模型
  391. 基础知识
  392. 匹配语法
  393. 细节
  394. 关键字参数和默认参数的实例
  395. 任意参数的实例
  396. Python 3.0 Keyword-Only参数
  397. min调用
  398. 满分
  399. 加分点
  400. 结论
  401. 一个更有用的例子:通用set函数
  402. 模拟Python 3.0 print函数
  403. 使用Keyword-Only参数
  404. 为什么要在意:关键字参数
  405. 本章小结
  406. 本章习题
  407. 习题解答
  408. 第19章 函数的高级话题
  409. 函数设计概念
  410. 递归函数
  411. 用递归求和
  412. 编码替代方案
  413. 循环语句VS递归
  414. 处理任意结构
  415. 函数对象:属性和注解
  416. 间接函数调用
  417. 函数内省
  418. 函数属性
  419. Python 3.0中的函数注解
  420. 匿名函数: lambda
  421. lambda表达式
  422. 为什么使用lambda
  423. 如何(不要)让Python代码变得晦涩难懂
  424. 嵌套lambda和作用域
  425. 为什么要在意:回调
  426. 在序列中映射函数:map
  427. 函数式编程工具:filter和reduce
  428. 本章小结
  429. 本章习题
  430. 习题解答
  431. 第20章 迭代和解析,第二部分
  432. 回顾列表解析:函数式编程工具
  433. 列表解析与map
  434. 增加测试和嵌套循环
  435. 列表解析和矩阵
  436. 理解列表解析
  437. 为什么要在意:列表解析和map
  438. 重访迭代器:生成器
  439. 生成器函数:yield VS return
  440. 生成器表达式:迭代器遇到列表解析
  441. 生成器函数 VS 生成器表达式
  442. 生成器是单迭代器对象 508
  443. 用迭代工具模拟zip和map
  444. 为什么你会留意:单次迭代
  445. 内置类型和类中的值生成
  446. Python 3.0解析语法概括
  447. 解析集合和字典解析
  448. 针对集合和字典的扩展的解析语法
  449. 对迭代的各种方法进行计时
  450. 对模块计时
  451. 计时脚本
  452. 计时结果
  453. 计时模块替代方案
  454. 其他建议
  455. 函数陷阱
  456. 本地变量是静态检测的
  457. 默认和可变对象
  458. 没有return语句的函数
  459. 嵌套作用域的循环变量
  460. 本章小结
  461. 本章习题
  462. 习题解答
  463. 第四部分练习题
  464. 第五部分 模块
  465. 第21章 模块:宏伟蓝图
  466. 为什么使用模块
  467. Python程序架构
  468. 如何组织一个程序
  469. 导入和属性
  470. 标准库模块
  471. import如何工作
  472. 1.搜索
  473. 2.编译(可选)
  474. 3.运行
  475. 模块搜索路径
  476. 配置搜索路径
  477. 搜索路径的变动
  478. sys.path列表
  479. 模块文件选择
  480. 高级的模块选择概念
  481. 第三方工具:distutils
  482. 本章小结
  483. 本章习题
  484. 习题解答
  485. 第22章 模块代码编写基础
  486. 模块的创建
  487. 模块的使用
  488. import语句
  489. from语句
  490. from *语句
  491. 导入只发生一次
  492. import和from是赋值语句
  493. 文件间变量名的改变
  494. import和from的对等性
  495. from语句潜在的陷阱
  496. 模块命名空间
  497. 文件生成命名空间
  498. 属性名的点号运算
  499. 导入和作用域
  500. 命名空间的嵌套
  501. 重载模块
  502. reload基础
  503. reload实例
  504. 为什么要在意:模块重载
  505. 本章小结
  506. 本章习题
  507. 习题解答
  508. 第23章 模块包
  509. 包导入基础
  510. 包和搜索路径设置
  511. __init__.py包文件
  512. 包导入实例
  513. 包对应的from语句和import语句
  514. 为什么要使用包导入
  515. 三个系统的传说
  516. 包相对导入
  517. Python 3.0中的变化
  518. 相对导入基础知识
  519. 为什么使用相对导入
  520. 相对导入的作用域
  521. 模块查找规则总结
  522. 相对导入的应用
  523. 为什么要在意:模块包
  524. 本章小结
  525. 本章习题
  526. 习题解答
  527. 第24章 高级模块话题
  528. 在模块中隐藏数据
  529. 最小化from *的破坏:_X和__all__
  530. 启用以后的语言特性
  531. 混合用法模式:__name__和__main__
  532. 以__name__进行单元测试
  533. 使用带有__name__的命令行参数
  534. 修改模块搜索路径
  535. Import语句和from语句的as扩展
  536. 模块是对象:元程序
  537. 用名称字符串导入模块
  538. 过渡性模块重载
  539. 模块设计理念
  540. 模块陷阱
  541. 顶层代码的语句次序的重要性
  542. from复制变量名,而不是连接
  543. from *会让变量语义模糊
  544. reload不会影响from导入
  545. reload、from以及交互模式测试
  546. 递归形式的from导入无法工作
  547. 本章小结
  548. 本章习题
  549. 习题解答
  550. 第五部分练习题
  551. 第六部分 类和OOP
  552. 第25章 OOP:宏伟蓝图
  553. 为何使用类
  554. 概览OOP
  555. 属性继承搜索
  556. 类和实例
  557. 类方法调用
  558. 编写类树
  559. OOP是为了代码重用
  560. 本章小结
  561. 本章习题
  562. 习题解答
  563. 第26章 类代码编写基础
  564. 类产生多个实例对象
  565. 类对象提供默认行为
  566. 实例对象是具体的元素
  567. 第一个例子
  568. 类通过继承进行定制
  569. 第二个例子
  570. 类是模块内的属性
  571. 类可以截获Python运算符
  572. 第三个例子
  573. 为什么要使用运算符重载
  574. 世界上最简单的Python类
  575. 类与字典的关系
  576. 本章小结
  577. 本章习题
  578. 习题解答
  579. 第27章 更多实例
  580. 步骤1:创建实例
  581. 编写构造函数
  582. 在进行中测试
  583. 以两种方式使用代码
  584. 版本差异提示
  585. 步骤2:添加行为方法
  586. 编写方法
  587. 步骤3:运算符重载
  588. 提供打印显示
  589. 步骤4:通过子类定制行为
  590. 编写子类
  591. 扩展方法:不好的方式
  592. 扩展方法:好的方式
  593. 多态的作用
  594. 继承、定制和扩展
  595. OOP:大思路
  596. 步骤5:定制构造函数
  597. OOP比我们认为的要简单
  598. 组合类的其他方式
  599. 在Python 3.0中捕获内置属性
  600. 步骤6:使用内省工具
  601. 特殊类属性
  602. 一种通用显示工具
  603. 实例与类属性的关系
  604. 工具类的命名考虑
  605. 类的最终形式
  606. 步骤7(最后一步):把对象存储到数据库中
  607. Pickle和Shelve
  608. 在shelve数据库中存储对象
  609. 交互地探索shelve
  610. 更新shelve中的对象
  611. 未来方向
  612. 本章小结
  613. 本章习题
  614. 习题解答
  615. 第28章 类代码编写细节
  616. class语句
  617. 一般形式
  618. 例子
  619. 方法
  620. 例子
  621. 调用超类构造函数
  622. 其他方法调用的可能性
  623. 继承
  624. 属性树的构造
  625. 继承方法的专有化
  626. 类接口技术
  627. 抽象超类
  628. Python 2.6和Python 3.0的抽象超类
  629. 命名空间:完整的内容
  630. 简单变量名:如果赋值就不是全局变量
  631. 属性名称:对象命名空间
  632. Python命名空间的“禅”:赋值将变量名分类
  633. 命名空间字典
  634. 命名空间链接
  635. 回顾文档字符串
  636. 类与模块的关系
  637. 本章小结
  638. 本章习题
  639. 习题解答
  640. 第29章 运算符重载
  641. 基础知识
  642. 构造函数和表达式:__init__和__sub__
  643. 常见的运算符重载方法
  644. 索引和分片:__getitem__和__setitem__
  645. 拦截分片
  646. Python 2.6中的分片和索引
  647. 索引迭代:__getitem__
  648. 迭代器对象:__iter__和__next__
  649. 用户定义的迭代器
  650. 有多个迭代器的对象
  651. 成员关系:__contains__、__iter__和__getitem__
  652. 属性引用:__getattr__和__setattr__
  653. 其他属性管理工具
  654. 模拟实例属性的私有性:第一部分
  655. __repr__和__str__会返回字符串表达形式
  656. 右侧加法和原处加法:__radd__和__iadd__
  657. 原处加法
  658. Call表达式:__call__
  659. 函数接口和回调代码
  660. 比较:__lt__、__gt__和其他方法
  661. Python 2.6的__cmp__方法(已经从Python 3.0中移除了)
  662. 布尔测试:__bool__和__len__
  663. Python 2.6中的布尔
  664. 对象析构函数:__del__
  665. 本章小结
  666. 本章习题
  667. 习题解答
  668. 第30章 类的设计
  669. Python和OOP
  670. 通过调用标记进行重载(或不要)
  671. OOP和继承:“是一个”关系
  672. OOP和组合:“有一个”关系
  673. 重访流处理器
  674. 为什么要在意:类和持续性
  675. OOP和委托:“包装”对象
  676. 类的伪私有属性
  677. 变量名压缩概览
  678. 为什么使用伪私有属性
  679. 方法是对象:绑定或无绑定
  680. 在Python 3.0中,无绑定方法是函数
  681. 绑定方法和其他可调用对象
  682. 为什么要在意:绑定方法和回调函数
  683. 多重继承:“混合”类
  684. 编写混合显示类
  685. 类是对象:通用对象的工厂
  686. 为什么有工厂
  687. 与设计相关的其他话题
  688. 本章小结
  689. 本章习题
  690. 习题解答
  691. 第31章 类的高级主题
  692. 扩展内置类型
  693. 通过嵌入扩展类型
  694. 通过子类扩展类型
  695. 新式类
  696. 新式类变化
  697. 类型模式变化
  698. 钻石继承变动
  699. 新式类的扩展
  700. slots实例
  701. 类特性
  702. __getattribute__和描述符
  703. 元类
  704. 静态方法和类方法
  705. 为什么使用特殊方法
  706. Python 2.6和Python 3.0中的静态方法
  707. 静态方法替代方案
  708. 使用静态和类方法
  709. 使用静态方法统计实例
  710. 用类方法统计实例
  711. 装饰器和元类:第一部分
  712. 函数装饰器基础
  713. 装饰器例子
  714. 类装饰器和元类
  715. 更多详细信息
  716. 类陷阱
  717. 修改类属性的副作用
  718. 修改可变的类属性也可能产生副作用
  719. 多重继承:顺序很重要
  720. 类、方法以及嵌套作用域
  721. Python中基于委托的类:__getattr__和内置函数
  722. “过度包装”
  723. 本章小结
  724. 本章习题
  725. 习题解答
  726. 第六部分练习题
  727. 为什么要在意:大师眼中的OOP
  728. 第七部分 异常和工具
  729. 第32章 异常基础
  730. 为什么使用异常
  731. 异常的角色
  732. 异常处理:简明扼要
  733. 默认异常处理器
  734. 捕获异常
  735. 引发异常
  736. 用户定义的异常
  737. 终止行为
  738. 为什么要在意:错误检查
  739. 本章小结
  740. 本章习题
  741. 习题解答
  742. 第33章 异常编码细节
  743. try/except/else语句
  744. try语句分句
  745. try/else分句
  746. 例子:默认行为
  747. 例子:捕捉内置异常
  748. try/finally语句
  749. 例子:利用try/finally编写终止行为
  750. 统一try/except/finally语句
  751. 统一try语句语法
  752. 通过嵌套合并finally和except
  753. 合并try的例子
  754. raise语句
  755. 利用raise传递异常
  756. Python 3.0异常链:raise from
  757. assert语句
  758. 例子:收集约束条件(但不是错误)
  759. with/as环境管理器
  760. 基本使用
  761. 环境管理协议
  762. 本章小结
  763. 本章习题
  764. 习题解答
  765. 第34章 异常对象
  766. 异常:回到未来
  767. 字符串异常很简单
  768. 基于类的异常
  769. 类异常例子
  770. 为什么使用类异常
  771. 内置Exception类
  772. 内置异常分类
  773. 默认打印和状态
  774. 定制打印显示
  775. 定制数据和行为
  776. 提供异常细节
  777. 提供异常方法
  778. 本章小结
  779. 本章习题
  780. 习题解答
  781. 第35章 异常的设计
  782. 嵌套异常处理器
  783. 例子:控制流程嵌套
  784. 例子:语法嵌套化
  785. 异常的习惯用法
  786. 异常不总是错误
  787. 函数信号条件和raise
  788. 关闭文件和服务器连接
  789. 在try外进行调试
  790. 运行进程中的测试
  791. 关于sys.exc_info
  792. 与异常有关的技巧
  793. 应该包装什么
  794. 捕捉太多:避免空except语句
  795. 捕捉过少:使用基于类的分类
  796. 核心语言总结
  797. Python工具集
  798. 大型项目的开发工具
  799. 本章小结
  800. 第七部分练习题
  801. 第八部分 高级话题
  802. 第36章 Unicode和字节字符串
  803. Python 3.0中的字符串修改
  804. 字符串基础知识
  805. 字符编码方法
  806. Python的字符串类型
  807. 文本和二进制文件
  808. Python 3.0中的字符串应用
  809. 常量和基本属性
  810. 转换
  811. 编码Unicode字符串
  812. 编码ASCII文本
  813. 编码非ASCII文本
  814. 编码和解码非ASCII文本
  815. 其他Unicode编码技术
  816. 转换编码
  817. 在Python 2.6中编码Unicode字符串
  818. 源文件字符集编码声明
  819. 使用Python 3.0 Bytes对象
  820. 方法调用
  821. 序列操作
  822. 创建bytes对象的其他方式
  823. 混合字符串类型
  824. 使用Python 3.0(和Python 2.6)bytearray对象
  825. 使用文本文件和二进制文件
  826. 文本文件基础
  827. Python 3.0中的文本和二进制模式
  828. 类型和内容错误匹配
  829. 使用Unicode文件
  830. 在Python 3.0中读取和写入Unicode
  831. 在Python 3.0中处理BOM
  832. Python 2.6中的Unicode文件
  833. Python 3.0中其他字符串工具的变化
  834. re模式匹配模块
  835. Struct二进制数据模块
  836. pickle对象序列化模块
  837. XML解析工具
  838. 本章小结
  839. 本章习题
  840. 习题解答
  841. 第37章 管理属性
  842. 为什么管理属性
  843. 插入在属性访问时运行的代码
  844. 特性
  845. 基础知识
  846. 第一个例子
  847. 计算的属性
  848. 使用装饰器编写特性
  849. 描述符
  850. 基础知识
  851. 第一个示例
  852. 计算的属性
  853. 在描述符中使用状态信息
  854. 特性和描述符是如何相关的
  855. __getattr__和__getattribute__
  856. 基础知识
  857. 第一个示例
  858. 计算属性
  859. __getattr__和__getattribute__比较
  860. 管理技术比较
  861. 拦截内置操作属性
  862. 重访基于委托的Manager
  863. 示例:属性验证
  864. 使用特性来验证
  865. 使用描述符验证
  866. 使用__getattr__来验证
  867. 使用__getattribute__验证
  868. 本章小结
  869. 本章习题
  870. 习题解答
  871. 第38章 装饰器
  872. 什么是装饰器
  873. 管理调用和实例
  874. 管理函数和类
  875. 使用和定义装饰器
  876. 为什么使用装饰器
  877. 基础知识
  878. 函数装饰器
  879. 类装饰器
  880. 装饰器嵌套
  881. 装饰器参数
  882. 装饰器管理函数和类
  883. 编写函数装饰器
  884. 跟踪调用
  885. 状态信息保持选项
  886. 类错误之一:装饰类方法
  887. 计时调用
  888. 添加装饰器参数
  889. 编写类装饰器
  890. 单体类
  891. 跟踪对象接口
  892. 类错误之二:保持多个实例
  893. 装饰器与管理器函数的关系
  894. 为什么使用装饰器(重访)
  895. 直接管理函数和类
  896. 示例:“私有”和“公有”属性
  897. 实现私有属性
  898. 实现细节之一
  899. 公有声明的泛化
  900. 实现细节之二
  901. 开放问题
  902. Python不是关于控制
  903. 示例:验证函数参数
  904. 目标
  905. 针对位置参数的一个基本范围测试装饰器
  906. 针对关键字和默认泛化
  907. 实现细节
  908. 开放问题
  909. 装饰器参数 VS 函数注解
  910. 其他应用程序:类型测试
  911. 本章小结
  912. 本章习题
  913. 习题解答
  914. 第39章 元类
  915. 要么是元类,要么不是元类
  916. 提高魔力层次
  917. “辅助”函数的缺点
  918. 元类与类装饰器的关系:第一回合
  919. 元类模型
  920. 类是类型的实例
  921. 元类是Type的子类
  922. Class语句协议
  923. 声明元类
  924. 编写元类
  925. 基本元类
  926. 定制构建和初始化
  927. 其他元类编程技巧
  928. 实例与继承的关系
  929. 示例:向类添加方法
  930. 手动扩展
  931. 基于元类的扩展
  932. 元类与类装饰器的关系:第二回合
  933. 示例:对方法应用装饰器
  934. 用装饰器手动跟踪
  935. 用元类和装饰器跟踪
  936. 把任何装饰器应用于方法
  937. 元类与类装饰器的关系:第三回合
  938. “可选的”语言功能
  939. 本章小结
  940. 本章习题
  941. 习题解答
  942. 第九部分 附录
  943. 附录A 安装和配置
  944. 附录B 各部分练习题的解答
书名:Python学习手册(第4版)
作者:Mark Lutz
译者:李军, 刘红伟 等译
国内出版社:机械工业出版社
出版时间:2011年03月
页数:1129
书号:978-7-111-32653-3
原版书书名:Learning Python, Fourth Edition
原版书出版商:O'Reilly Media
Mark Lutz
 
作为全球Python培训界的领军人物。Mark Lutz是Python最畅销书籍的作者,也是Python社区的先驱。
Mark 是O’Reilly出版的《Programming Python》和《Python Pocket Reference》的作者,这两本书于2009年都已经出版了第3版。Mark自1992年开始接触Python,1995年开始撰写有关Python的书籍,从1997年开始教授Python课程。截止到2009年,他已经开办了225个Python短期培训课程,教授了大约3500名学习者,销售了大约25万册有关Python的书籍。许多书被翻译成十多种语言。
此外,Mark拥有威斯康星大学计算机科学学士和硕士学位,在过去的25年中,他主要从事编译器、编程工具、脚本程序以及各种客户端/服务器系统方面的工作。你也可以通过访问http://www.rmi.net/~lutz与他取得联系。
 
 
本书的封面动物为林鼠(wood rat,鼠科林鼠属),林鼠能够居住于各种环境(多岩石、灌木丛或沙地),遍布北美洲和中美洲,一般会远离人类。林鼠善于攀爬,巢居在离地面大约六公尺的树上或是灌木上,有些种类的林鼠会居住在地洞或是岩石的缝隙中,有时也会住在其他动物放弃的洞穴里。
这些灰色中型啮齿类动物又称为收集鼠(pack rat)。它们喜欢把各种各样的东西运回自己的巢穴,无论是否有用。它们对闪闪发亮的东西尤其感兴趣,比如易拉罐、玻璃或者银器。
封面图来自19世纪Cuvier’s Animals的雕刻版画。