Python学习手册(第三版)
Python学习手册(第三版)
Mark Lutz
侯靖 等译
出版时间:2009年07月
页数:656
Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择。无论你是刚接触编程或者刚接触Python,通过学习本书,你可以迅速高效地精通核心Python语言基础。读完本书,你会对这门语言有足够的了解,从而可以在你所从事的任何应用领域中使用它。
本书是作者根据过去10年用于教学而广为人知的培训课程的材料编写而成的。除了有许多详实说明和每章小结之外,每章还包括一个头脑风暴:这是本书独特的一部分,配合以实用的练习题和复习题,让读者练习新学的技巧并测试自己的理解程度。
本书包括:
● 类型和操作——深入讨论Python主要的内置对象类型:数字、列表和字典等。
● 语句和语法——在Python中输入代码来建立并处理对象,以及Python一般的语法模型。
● 函数——Python基本的面向过程工具,用于组织代码和重用。
● 模块——封装语句、函数以及其他工具,从而可以组织成较大的组件。
● 类和OOP——Python可选的面向对象编程工具,可用于组织程序代码从而实现定制和重用。
● 异常和工具——异常处理模型和语句,并介绍编写更大程序的开发工具。
● 讨论Python 3.0。
本书让你对Python语言有深入而完整的了解,从而帮助你理解今后遇到的任何Python应用程序实例。如果你准备探索Google和YouTube为什么选中了Python,本书就是你入门的最佳指南。
Mark Lutz是世界级的Python培训讲师。他是畅销Python书籍的作者,从1992年起,他就是Python社区的先锋。他也是《Programming Python》和《Python Pocket Reference》两本书的作者。从1997年起,Mark开始教授Python课程,截止到2007年,他开办了200个以上的Python短期培训课程。Mark拥有计算机科学学士和硕士学位,而且有25年的软件开发经验。
  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. 面向对象
  21. 免费
  22. 可移植
  23. 功能强大
  24. 可混合
  25. 使用简单
  26. Python是工程,不是艺术
  27. 简单易学
  28. 名字来源于Monty Python
  29. Python和其他语言比较起来怎么样
  30. 本章小结
  31. 头脑风暴
  32. 本章习题
  33. 习题解答
  34. 第2章 Python如何运行程序
  35. Python解释器简介
  36. 程序执行
  37. 程序员的视角
  38. Python的视角
  39. 执行模块的变种
  40. Python实现的替代者
  41. 执行优化工具
  42. 冻结二进制文件
  43. 未来的可能性
  44. 本章小结
  45. 头脑风暴
  46. 本章习题
  47. 习题解答
  48. 第3章 如何运行程序
  49. 交互模式下编写代码
  50. 在交互提示模式下测试代码
  51. 使用交互提示模式
  52. 系统命令行和文件
  53. 使用命令行和文件
  54. UNIX可执行脚本(#!)
  55. UNIX env查找技巧
  56. 点击文件图标
  57. 在Windows中点击图标
  58. raw_input的技巧
  59. 图标点击的其他限制
  60. 模块导入和重载
  61. 模块的显要特性:属性
  62. import和reload的使用注意事项
  63. IDLE用户界面
  64. IDLE基础
  65. 使用IDLE
  66. 高级IDLE工具
  67. 其他的IDE
  68. 嵌入式调用
  69. 动付二进制的可执行性
  70. 文本编辑器启动的选择
  71. 其他的启动选择
  72. 未来的可能
  73. 我应该选用哪种
  74. 本章小结
  75. 头脑风暴
  76. 本章习题
  77. 习题解答
  78. 头脑风暴:第一部分 练习题
  79. 第二部分 类型和运算
  80. 第4章 介绍Python对象类型
  81. 为什么使用内置类型
  82. Python的核心数据类型
  83. 数字
  84. 字符串
  85. 序列的操作
  86. 不可变性
  87. 类型特定的方法
  88. 寻求帮助
  89. 编写字符串的其他方法
  90. 模式匹配
  91. 列表
  92. 序列操作
  93. 类型特定的操作
  94. 边界检查
  95. 嵌套
  96. 列表解析
  97. 字典
  98. 映射操作
  99. 重访嵌套
  100. 键的排序:for 循环
  101. 迭代和优化
  102. 不存在的键:if 测试
  103. 元组
  104. 为什么要用元组
  105. 文件
  106. 其他文件类工具
  107. 其他核心类型
  108. 如何破坏代码的灵活性
  109. 用户定义的类
  110. 剩余的内容
  111. 本章小结
  112. 头脑风暴
  113. 本章习题
  114. 习题解答
  115. 第5章 数字
  116. Python的数字类型
  117. 数字常量
  118. 内置数学工具和扩展
  119. Python表达式操作符
  120. 混合操作所遵循的操作符优先级
  121. 括号分组的子表达式
  122. 混合类型自动升级
  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. 习题解答
  156. 第7章 字符串
  157. 字符串常量
  158. 单双引号字符串是一样的
  159. 用转义序列代表特殊字节
  160. 字符串抑制转义
  161. 三重引号编写多行字符串块
  162. 字符串编码更大的字符集
  163. 实际应用中的字符串
  164. 基本操作
  165. 索引和分片
  166. 为什么要在意:分片
  167. 字符串转换工具
  168. 修改字符串
  169. 字符串格式化
  170. 更高级的字符串格式化
  171. 基于字典的字符串格式化
  172. 字符串方法
  173. 字符串方法实例:修改字符串
  174. 字符串方法实例:文本解析
  175. 实际应用中的其他常见字符串方法
  176. 最初的字符串模块
  177. 通常意义下的类型分类
  178. 同样分类的类型共享其操作集合
  179. 可变类型能够在原处修改
  180. 本章小结
  181. 头脑风暴
  182. 本章习题
  183. 习题解答
  184. 第8章 列表与字典
  185. 列表
  186. 实际应用中的列表
  187. 基本列表操作
  188. 索引、分片和矩阵
  189. 原处修改列表
  190. 字典
  191. 实际应用中的字典
  192. 字典的基本操作
  193. 原处修改字典
  194. 其他字典方法
  195. 语言表
  196. 字典用法注意事项
  197. 为什么要在意字典接口
  198. 本章小结
  199. 头脑风暴
  200. 本章习题
  201. 习题解答
  202. 第9章 元组、文件及其他
  203. 元组
  204. 实际应用中的元组
  205. 为什么有了列表还要元组
  206. 文件
  207. 打开文件
  208. 使用文件
  209. 实际应用中的文件
  210. 其他文件工具
  211. 重访类型分类
  212. 为什么要在意操作符重载
  213. 对象灵活性
  214. 引用 VS 拷贝
  215. 比较、相等性和真值
  216. Python中真和假的含义
  217. Python的类型层次
  218. Python中的其他类型
  219. 内置类型陷阱
  220. 赋值生成引用,而不是拷贝
  221. 重复能够增加层次深度
  222. 留意循环数据结构
  223. 不可变类型不可以在原处改变
  224. 本章小结
  225. 头脑风暴
  226. 本章习题
  227. 习题解答
  228. 头脑风暴:第二部分练习题
  229. 第三部分 语句和语法
  230. 第10章 Python语句简介
  231. 重访Python程序结构
  232. Python的语句
  233. 两个if的故事
  234. Python增加了什么
  235. Python删除了什么
  236. 终止行就是终止语句
  237. 为什么使用缩进语法
  238. 几个特殊实例
  239. 简短实例:交互循环
  240. 一个简单的交互式循环
  241. 对用户输入数据做数学运算
  242. 用测试输入数据来处理错误
  243. 用try语句处理错误
  244. 嵌套代码三层
  245. 本章小结
  246. 头脑风暴
  247. 本章习题
  248. 习题解答
  249. 第11章 赋值、表达式和打印
  250. 赋值语句
  251. 赋值语句的形式
  252. 序列赋值
  253. 多目标赋值语句
  254. 增强赋值语句
  255. 变量命名规则
  256. 表达式语句
  257. 表达式语句和在原处的修改
  258. 打印语句
  259. Python的“Hello World”程序
  260. 重定向输出流
  261. print >> file扩展
  262. 本章小结
  263. 头脑风暴
  264. 本章习题
  265. 习题解答
  266. 第12章 if测试
  267. if语句
  268. 通用格式
  269. 基本例子
  270. 多路分支
  271. Python语法规则
  272. 代码块分隔符
  273. 语句的分隔符
  274. 一些特殊情况
  275. 真值测试
  276. if/else三元表达式
  277. 为什么要在意布尔值
  278. 本章小结
  279. 头脑风暴
  280. 本章习题
  281. 习题解答
  282. 第13章 while和for循环
  283. while循环
  284. 一般格式
  285. 例子
  286. break、continue、pass和循环else
  287. 一般循环格式
  288. 例子
  289. 为什么要在意“模拟C 语言的while循环”
  290. for循环
  291. 一般格式
  292. 例子
  293. 为什么要在意“文件扫描”
  294. 迭代器:初探
  295. 文件迭代器
  296. 其他内置类型迭代器
  297. 其他迭代环境
  298. 用户定义的迭代器
  299. 编写循环的技巧
  300. 循环计数器:while和range
  301. 非完备遍历:range
  302. 修改列表:range
  303. 并行遍历:zip和map
  304. 产生偏移和元素:enumerate
  305. 列表解析:初探
  306. 列表解析基础
  307. 对文件使用列表解析
  308. 扩展列表解析语法
  309. 本章小结
  310. 头脑风暴
  311. 本章习题
  312. 习题解答
  313. 第14章 文档
  314. Python文档资源
  315. #注释
  316. dir函数
  317. 文档字符串:__doc__
  318. PyDoc:help函数
  319. PyDoc:HTML报表
  320. 标准手册集
  321. 网络资源
  322. 已出版的书籍
  323. 常见编写代码的陷阱
  324. 本章小结
  325. 头脑风暴
  326. 本章习题
  327. 习题解答
  328. 头脑风暴:第三部分练习题
  329. 第四部分 函数
  330. 第15章 函数基础
  331. 为何使用函数
  332. 编写函数
  333. def语句
  334. def语句是实时执行的
  335. 第一个例子:定义和调用
  336. 定义
  337. 调用
  338. Python中的多态
  339. 第二个例子:寻找序列的交集
  340. 定义
  341. 调用
  342. 重访多态
  343. 本地变量
  344. 本章小结
  345. 头脑风暴
  346. 本章习题
  347. 习题解答
  348. 第16章 作用域和参数
  349. 作用域法则
  350. 函数作用域基础
  351. 变量名解析:LEGB原则
  352. 作用域实例
  353. 内置作用域
  354. global语句
  355. 最小化全局变量
  356. 最小化文件间的修改
  357. 其他访问全局变量的方法
  358. 作用域和嵌套函数
  359. 嵌套作用域的细节
  360. 嵌套作用域举例
  361. 传递参数
  362. 参数和共享引用
  363. 避免可变参数的修改
  364. 对参数输出进行模拟
  365. 特定的参数匹配模型
  366. 关键字参数和默认参数的实例
  367. 任意参数的实例
  368. 关键字参数和默认参数的混合
  369. min调用
  370. 一个更有用的例子:通用set函数
  371. 参数匹配:细节
  372. 为什么要在意:关键字参数
  373. 本章小结
  374. 头脑风暴
  375. 本章习题
  376. 习题解答
  377. 第17章 函数的高级话题
  378. 匿名函数: lambda
  379. lambda表达式
  380. 为什么使用lambda
  381. 如何(不要)让Python代码变得晦涩难懂
  382. 嵌套lambda和作用域
  383. 作为参数来应用函数
  384. 内置函数apply
  385. 为什么要在意:回调
  386. 传入关键字参数
  387. 和apply类似的调用语法
  388. 在序列中映射函数:map
  389. 函数式编程工具: filter和reduce
  390. 重访列表解析:映射
  391. 列表解析基础
  392. 增加测试和嵌套循环
  393. 列表解析和矩阵
  394. 理解列表解析
  395. 为什么要在意:列表解析和map
  396. 重访迭代器:生成器
  397. 生成器函数实例
  398. 扩展生成器函数协议:send和next
  399. 迭代器和内置类型
  400. 生成器表达式:迭代器遇到列表解析
  401. 对迭代的各种方法进行计时
  402. 函数设计概念
  403. 函数是对象:简洁调用
  404. 函数陷阱
  405. 本地变量是静态检测的
  406. 默认和可变对象
  407. 没有return语句的函数
  408. 嵌套作用域的循环变量
  409. 本章小结
  410. 头脑风暴
  411. 本章习题
  412. 习题解答
  413. 头脑风暴:第四部分 练习题
  414. 第五部分 模块
  415. 第18章 模块:宏伟蓝图
  416. 为什么使用模块
  417. Python程序构架
  418. 如何组织一个程序
  419. 导入和属性
  420. 标准库模块
  421. import如何工作
  422. 搜索
  423. 编译(可选)
  424. 运行
  425. 第三方工具:distutils
  426. 本章小结
  427. 头脑风暴
  428. 本章习题
  429. 习题解答
  430. 第19章 模块代码编写基础
  431. 模块的创建
  432. 模块的使用
  433. import语句
  434. from语句
  435. from * 语句
  436. 导入只发生一次
  437. import和from是赋值语句
  438. 文件间变量名的改变
  439. import和from的对等性
  440. from语句潜在的陷阱
  441. 模块命名空间
  442. 文件生成命名空间
  443. 属性名的点号运算
  444. 导入和作用域
  445. 命名空间的嵌套
  446. 重载模块
  447. reload基础
  448. reload实例
  449. 为什么要在意:模块重载
  450. 本章小结
  451. 头脑风暴
  452. 本章习题
  453. 习题解答
  454. 第20章 模块包
  455. 包导入基础
  456. 包和搜索路径设置
  457. __init__.py包文件
  458. 包导入实例
  459. 包对应的from和import
  460. 为什么要使用包导入
  461. 三个系统的传说
  462. 为什么要在意:模块包
  463. 本章小结
  464. 头脑风暴
  465. 本章习题
  466. 习题解答
  467. 第21章 高级模块话题
  468. 在模块中隐藏数据
  469. 最小化from *的破坏:_X和__all__
  470. 启用以后的语言特性
  471. 混合用法模式:__name__和__main__
  472. 以__name__进行单元测试
  473. 修改模块搜索路径
  474. import as扩展
  475. 相对导入语法
  476. 为什么使用相对导入
  477. 模块设计理念
  478. 模块是对象:元程序
  479. 模块陷阱
  480. 顶层代码的语句次序的重要性
  481. 通过变量名字符串导入模块
  482. from复制变量名,而不是连接
  483. from *会让变量语义模糊
  484. reload不会影响from导入
  485. reload、from以及交互模式测试
  486. reload的使用没有传递性
  487. 递归形式的from import无法工作
  488. 本章小结
  489. 头脑风暴
  490. 本章习题
  491. 习题解答
  492. 头脑风暴:第五部分练习题
  493. 第六部分 类和OOP
  494. 第22章 OOP:宏伟蓝图
  495. 为何使用类
  496. 概览OOP
  497. 属性继承搜索
  498. 类和实例
  499. 类方法调用
  500. 编写类树
  501. OOP是为了代码重用
  502. 本章小结
  503. 头脑风暴
  504. 本章习题
  505. 习题解答
  506. 第23章 类代码编写基础
  507. 类产生多个实例对象
  508. 类对象提供默认行为
  509. 实例对象是具体的元素
  510. 第一个例子
  511. 类通过继承进行定制
  512. 第二个例子
  513. 类是模块内的属性
  514. 类可以截获Python运算符
  515. 第三个例子
  516. 为什么要使用运算符重载
  517. 世界上最简单的Python类
  518. 本章小结
  519. 头脑风暴
  520. 本章习题
  521. 习题解答
  522. 第24章 类代码编写细节
  523. class语句
  524. 一般形式
  525. 例子
  526. 方法
  527. 例子
  528. 调用超类的构造器
  529. 其他方法调用的可能性
  530. 继承
  531. 属性树的构造
  532. 继承方法的专有化
  533. 类接口技术
  534. 抽象超类
  535. 运算符重载
  536. 常见的运算符重载方法
  537. __getitem__拦截索引运算
  538. __getitem__和__iter__实现迭代
  539. 用户定义的迭代器
  540. __getattr__和__setattr__捕捉属性的引用
  541. 模拟实例属性的私有性
  542. __repr__和__str__会返回字符串表达形式
  543. __radd__处理右侧加法
  544. __call__拦截调用
  545. 函数接口和回调代码
  546. __del__是析构器
  547. 命名空间:完整的内容
  548. 简单变量名:如果赋值就不是全局变量
  549. 属性名称:对象命名空间
  550. Python命名空间的“禅”:赋值将变量名分类
  551. 命名空间字典
  552. 命名空间链接
  553. 一个更实际的例子
  554. 本章小结
  555. 头脑风暴
  556. 本章习题
  557. 习题解答
  558. 第25章 类的设计
  559. Python和OOP
  560. 通过调用标记进行重载(或不要)
  561. 类作为记录
  562. 类和继承:“是一个”关系
  563. 类和组合:“有一个”关系
  564. 重访流处理器
  565. 为什么要在意:类和持续性
  566. OOP和委托
  567. 多重继承
  568. 类是对象:通用对象的工厂
  569. 为什么有工厂
  570. 方法是对象:绑定或无绑定
  571. 重访文档字符串
  572. 为什么要在意:绑定方法和回调函数
  573. 类和模块
  574. 本章小结
  575. 头脑风暴
  576. 本章习题
  577. 习题解答
  578. 第26章 类的高级主题
  579. 扩展内置类型
  580. 通过嵌入扩展类型
  581. 通过子类扩展类型
  582. 类的伪私有属性
  583. 变量名压缩概览
  584. 为什么使用伪私有属性
  585. 新式类
  586. 钻石继承变动
  587. 其他新式类的扩展
  588. 静态和类方法
  589. 使用静态和类方法
  590. 函数装饰器
  591. 装饰器例子
  592. 类陷阱
  593. 修改类属性的副作用
  594. 多重继承:顺序很重要
  595. 类、方法以及嵌套作用域
  596. “过度包装”
  597. 本章小结
  598. 头脑风暴
  599. 本章习题
  600. 习题解答
  601. 头脑风暴:第六部分 练习题
  602. 第七部分 异常和工具
  603. 第27章 异常基础
  604. 为什么使用异常
  605. 异常的角色
  606. 异常处理:简明扼要
  607. try/except/else语句
  608. try语句分句
  609. try/else分句
  610. 例子:默认行为
  611. 例子:捕捉内置异常
  612. try/finally语句
  613. 例子:利用try/finally编写终止行为
  614. 统一try/except/finally
  615. 通过嵌套合并finally和except
  616. 合并try的例子
  617. raise语句
  618. 例子:引发并捕捉用户定义的异常
  619. 例子:利用raise传入额外的数据
  620. 例子:利用raise传递异常
  621. assert语句
  622. 例子:收集约束条件(但不是错误)
  623. with/as环境管理器
  624. 基本使用
  625. 环境管理协议
  626. 为什么要在意:错误检查
  627. 本章小结
  628. 头脑风暴
  629. 本章习题
  630. 习题解答
  631. 第28章 异常对象
  632. 基于字符串的异常
  633. 字符串异常就要出局了
  634. 基于类的异常
  635. 类异常例子
  636. 为什么使用类异常
  637. 内置Exception类
  638. 定义异常文本
  639. 发送额外数据和实例行为
  640. raise语句的一般形式
  641. 本章小结
  642. 头脑风暴
  643. 本章习题
  644. 习题解答
  645. 第29章 异常的设计
  646. 嵌套异常处理器
  647. 例子:控制流程嵌套
  648. 例子:语法嵌套化
  649. 异常的习惯用法
  650. 异常不总是错误
  651. 函数信号条件和raise
  652. 在try外进行调试
  653. 运行进程中的测试
  654. 关于sys.exc_info
  655. 与异常有关的技巧
  656. 应该包装什么
  657. 捕捉太多:避免空except语句
  658. 捕捉过少:使用基于类的分类
  659. 异常陷阱
  660. 字符串异常匹配是通过同一性而不是通过值
  661. 捕捉到错误的异常
  662. 核心语言总结
  663. Python工具集
  664. 大型项目的开发工具
  665. 本章小结
  666. 头脑风暴
  667. 本章习题
  668. 习题解答
  669. 头脑风暴:第七部分 练习题
  670. 第八部分 附录
  671. 附录A 安装和配置
  672. 附录B 每部分练习题解答
书名:Python学习手册(第三版)
作者:Mark Lutz
译者:侯靖 等译
国内出版社:机械工业出版社
出版时间:2009年07月
页数:656
书号:978-7-111-26776-8
原版书出版商: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与他取得联系。
 
 
《学习Python》第三版的封面动物为林鼠(wood rat,鼠科林鼠属),林鼠能够居住于各种环境(大多是在多岩石、灌木丛或是沙地),遍布北美洲和中美洲,一般会远离人类。林鼠善于攀爬,巢居在离地面大约六公尺的树上或是灌木上,有些种类的林鼠会居住在地洞或是岩石的缝隙中,也有时会住在其他动物放弃的洞穴里。
这些灰色中型啮齿类动物又称为收集鼠(pack rat):它们喜欢把各种各样的东西运回自己的巢穴,无论是否有用,它们对闪闪发亮的东西尤其感兴趣,比如易拉罐、玻璃或者银器。
封面图来自19世纪Cuvier’s Animals的雕刻板画。