标题：Python详细基础教程
基本信息
  原书名：Beginning Python: From Novice to Professional, Second Edition
原出版社： Apress
作者：(挪)Magnus Lie Hetland 
译者：司维曾军崴谭颖华
丛书名： 图灵程序设计丛书
出版社：人民邮电出版社
ISBN：9787115230270
出版日期：2010 年7月
开本：16开
页码：471
版次：2-1
内容简介
本书包括python程序设计的方方面面，首先从python的安装开始，随后介绍了python的基础知识和基本概念，包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了一些相对高级的主题，包括抽象、异常、魔法方法、属性、迭代器。此后探讨了如何将python与数据库、网络、c语言等工具结合使用，从而发挥出python的强大功能，同时介绍了python程序测试、打包、发布等知识。最后，作者结合前面讲述的内容，按照实际项目开发的步骤向读者介绍了几个具有实际意义的python项目的开发过程。
本书内容涉及的范围较广，既能为初学者夯实基础，又能帮助程序员提升技能，适合各个层次的python开发人员阅读参考。
作者
Magnus Lie Hetland 挪威科技大学副教授，教授算法。喜欢钻研新的编程语言，是Python语言的坚定支持者。他写过很多Python方面的书和在线教程，比如深受大家欢迎的网上教程Instant Python。
目录
[1]　第1章 基础知识1 
1,1 安装python 1 
1,1,1 windows 1 
1,1,2 linux和unix 3 
1,1,3 苹果机（macintosh）4 
1,1,4 其他发布版5 
1,1,5 时常关注，保持更新6 
1,2 交互式解释器6 
1,3 算法是什么7 
1,4 数字和表达式8 
1,4,1 长整型数9 
1,4,2 十六进制和八进制10 
1,5 变量10 
1,6 语句11 
1,7 获取用户输入12 
1,8 函数13 
1,9 模块14 
1,9,1 cmath和复数14 
1,9,2 回到__future__ 15 
1,10 保存并执行程序15 
,1,10,1 通过命令提示符运行python脚本16 
1,10,2 让脚本像普通程序一样运行17 
1,10,3 注释18 
1,11 字符串19 
1,11,1 单引号字符串和转义引号19 
1,11,2 拼接字符串20 
1,11,3 字符串表示，str和repr 20 
1,11,4 input和raw_input的比较21 
1,11,5 长字符串、原始字符串和unicode 22 
1,12 小结24 
1,12,1 本章的新函数25 
1,12,2 接下来学什么25 
第2章 列表和元组26 
2,1 序列概览26 
2,2 通用序列操作27 
2,2,1 索引27 
2,2,2 分片29 
2,2,3 序列相加31 
2,2,4 乘法31 
2,2,5 成员资格32 
2,2,6 长度、最小值和最大值33 
2,3 列表：python的“苦力” 34 
2,3,1 list函数34 
2,3,2 基本的列表操作34 
2,3,3 列表方法36 
2,4 元组：不可变序列41 
2,4,1 tuple函数42 
2,4,2 基本元组操作42 
2,4,3 那么，意义何在42 
2,5 小结43 
2,5,1 本章的新函数43 
2,5,2 接下来学什么43 
第3章 使用字符串44 
3,1 基本字符串操作44 
3,2 字符串格式化：精简版44 
3,3 字符串格式化：完整版46 
3,3,1 简单转换47 
3,3,2 字段宽度和精度47 
3,3,3 符号、对齐和0填充47 
3,4 字符串方法49 
3,4,1 find 49 
3,4,2 join 50 
3,4,3 lower 51 
3,4,4 replace 51 
3,4,5 split 52 
3,4,6 strip 52 
3,4,7 translate 52 
3,5 小结 54 
3,5,1 本章的新函数54 
3,5,2 接下来学什么54 
第4章 字典：当索引不好用时55 
4,1 字典的使用55 
4,2 创建和使用字典56 
4,2,1 dict函数56 
4,2,2 基本字典操作57 
4,2,3 字典的格式化字符串58 
4,2,4 字典方法59 
4,3 小结64 
4,3,1 本章的新函数64 
4,3,2 接下来学什么64 
第5章 条件、循环和其他语句65 
5,1 print和import的更多信息65 
5,1,1 使用逗号输出65 
5,1,2 把某件事作为另一件事导入66 
5,2 赋值魔法67 
5,2,1 序列解包67 
5,2,2 链式赋值68 
5,2,3 增量赋值68 
5,3 语句块：缩排的乐趣69 
5,4 条件和条件语句69 
5,4,1 这就是布尔变量的作用69 
5,4,2 条件执行和if 语句70 
5,4,3 else子句71 
5,4,4 elif子句71 
5,4,5 嵌套代码块71 
5,4,6 更复杂的条件72 
5,4,7 断言76 
5,5 循环76 
5,5,1 while循环77 
5,5,2 for循环77 
5,5,3 循环遍历字典元素78 
5,5,4 一些迭代工具79 
5,5,5 跳出循环80 
5,5,6 循环中的else子句82 
5,6 列表推导式——轻量级循环82 
5,7 三人行83 
5,7,1 什么都没发生84 
5,7,2 使用del删除84 
5,7,3 使用exec和eval执行和求值字符串85 
5,8 小结87 
5,8,1 本章的新函数88 
5,8,2 接下来学什么88 
第6章 抽象89 
6,1 懒惰即美德89 
6,2 抽象和结构90 
6,3 创建函数90 
6,3,1 记录函数91 
6,3,2 并非真正函数的函数92 
6,4 参数魔法92 
6,4,1 值从哪里来93 
6,4,2 我能改变参数吗93 
6,4,3 关键字参数和默认值97 
6,4,4 收集参数99 
6,4,5 反转过程101 
6,4,6 练习使用参数102 
6,5 作用域103 
6,6 递归105 
6,6,1 两个经典：阶乘和幂106 
6,6,2 另外一个经典：二元查找107 
6,7 小结110 
6,7,1 本章的新函数110 
6,7,2 接下来学什么111 
第7章 更加抽象112 
7,1 对象的魔力112 
7,1,1 多态113 
7,1,2 封装115 
7,1,3 继承117 
7,2 类和类型117 
7,2,1 类到底是什么117 
7,2,2 创建自己的类118 
7,2,3 特性、函数和方法119 
7,2,4 类的命名空间121 
7,2,5 指定超类122 
7,2,6 调查继承122 
7,2,7 多个超类123 
7,2,8 接口和内省124 
7,3 一些关于面向对象设计的思考125 
7,4 简明总结125 
7,4,1 本章的新函数126 
7,4,2 接下来学什么126 
第8章 异常127 
8,1 什么是异常127 
8,2 按自己的方式出错127 
8,2,1 raise语句127 
8,2,2 自定义异常类128 
8,3 捕捉异常129 
8,4 不止一个except子句130 
8,5 用一个块捕捉两个异常131 
8,6 捕捉对象131 
8,7 真正的全捕捉131 
8,8 万事大吉132 
8,9 最后…… 134 
8,10 异常和函数134 
8,11 异常之禅135 
8,12 小结136 
8,12,1 本章的新函数137 
8,12,2 接下来学什么137 
第9章 魔法方法、属性和迭代器138 
9,1 准备工作138 
9,2 构造方法139 
9,2,1 重写一般方法和特殊的构造方法140 
9,2,2 调用未绑定的超类构造方法141 
9,2,3 使用super函数142 
9,3 成员访问143 
9,3,1 基本的序列和映射规则144 
9,3,2 子类化列表，字典和字符串146 
9,4 更多魔力147 
9,5 属性147 
9,5,1 property函数148 
9,5,2 静态方法和类成员方法149 
9,5,3 __getattr__、__setattr__和它的朋友们150 
9,6 迭代器151 
9,6,1 迭代器规则151 
9,6,2 从迭代器得到序列153 
9,7 生成器153 
9,7,1 创建生成器153 
9,7,2 递归生成器154 
9,7,3 通用生成器156 
9,7,4 生成器方法156 
9,7,5 模拟生成器157 
9,8 八皇后问题158 
9,8,1 生成器和回溯158 
9,8,2 问题159 
9,8,3 状态表示159 
9,8,4 寻找冲突159 
9,8,5 基本情况160 
9,8,6 需要递归的情况161 
9,8,7 打包162 
9,9 小结163 
9,9,1 本章的新函数164 
9,9,2 接下来学什么164 
第10章 充电时刻165 
10,1 模块165 
10,1,1 模块是程序165 
10,1,2 模块用于定义167 
10,1,3 让你的模块可用169 
10,1,4 包171 
10,2 探究模块172 
10,2,1 模块中有什么172 
10,2,2 用help获取帮助173 
10,2,3 文档174 
10,2,4 使用源代码174 
10,3 标准库：一些最爱175 
10,3,1 sys 175 
10,3,2 os 176 
10,3,3 fileinput 178 
10,3,4 集合、堆和双端队列180 
10,3,5 time 184 
10,3,6 random 185 
10,3,7 shelve 188 
10,3,8 re 191 
10,3,9 其他有趣的标准模块204 
10,4 小结205 
10,4,1 本章的新函数205 
10,4,2 接下来学什么206 
第11章 文件和素材207 
11,1 打开文件207 
11,1,1 文件模式207 
11,1,2 缓冲208 
11,2 基本文件方法209 
11,2,1 读和写209 
11,2,2 管式输出210 
11,2,3 读写行211 
11,2,4 关闭文件211 
11,2,5 使用基本文件方法213 
11,3 对文件内容进行迭代214 
11,3,1 按字节处理214 
11,3,2 按行操作215 
11,3,3 读取所有内容215 
11,3,4 使用fileinput实现懒惰行迭代216 
11,3,5 文件迭代器216 
11,4 小结217 
11,4,1 本章的新函数218 
11,4,2 接下来学什么218 
第12章 图形用户界面219 
12,1 丰富的平台219 
12,2 下载和安装wxpython 220 
12,3 创建示例gui应用程序221 
12,3,1 开始221 
12,3,2 窗口和组件222 
12,3,3 标签、标题和位置223 
12,3,4 更智能的布局225 
12,3,5 事件处理226 
12,3,6 完成了的程序226 
12,4 但是我宁愿用…… 228 
12,4,1 使用tkinter 229 
12,4,2 使用jython和swing 229 
12,4,3 使用其他开发包230 
12,5 小结230 
第13章 数据库支持231 
13,1 python数据库api 232 
13,1,1 全局变量232 
13,1,2 异常233 
13,1,3 连接和游标233 
13,1,4 类型235 
13,2 sqlite和pysqlite 235 
13,2,1 入门236 
13,2,2 数据库应用程序示例237 
13,3 小结239 
13,3,1 本章的新函数240 
13,3,2 接下来学什么240 
第14章 网络编程241 
14,1 少数几个网络设计模块241 
14,1,1 socket模块242 
14,1,2 urllib和urllib2模块243 
14,1,3 其他模块245 
14,2 socketserver和它的朋友们246 
14,3 多连接246 
14,3,1 使用socketserver进行分叉和线程处理248 
14,3,2 带有select和poll的异步i/o 248 
14,4 twisted 251 
14,4,1 下载并安装twisted 251 
14,4,2 编写twisted服务器251 
14,5 小结253 
14,5,1 本章的新函数254 
14,5,2 接下来学什么254 
第15章python和万维网255 
15,1 屏幕抓取255 
15,1,1 tidy和xhtml解析256 
15,1,2 beautiful soup 260 
15,2 使用cgi创建动态网页261 
15,2,1 第一步：准备网络服务器261 
15,2,2 第二步：加入pound bang行261 
15,2,3 第三步：设置文件许可262 
15,2,4 cgi安全风险262 
15,2,5 简单的cgi脚本263 
15,2,6 使用cgitb调试263 
15,2,7 使用cgi模块264 
15,2,8 简单的表单265 
15,3 更进一步：mod_python 267 
15,3,1 安装mod_python 267 
15,3,2 cgi处理程序269 
15,3,3 psp 270 
15,3,4 发布271 
15,4 网络应用程序框架273 
15,5 web服务：正确分析274 
15,5,1 rss和相关内容274 
15,5,2 使用xml-rpc进行远程过程调用275 
15,5,3 soap 275 
15,6 小结276 
15,6,1 本章的新函数276 
15,6,2 接下来学什么276 
第16章 测试277 
16,1 先测试，后编码277 
16,1,1 精确的需求说明278 
16,1,2 为改变而计划279 
16,1,3 测试的4步279 
16,2 测试工具280 
16,2,1 doctest 280 
16,2,2 unittest 282 
16,3 单元测试以外的内容285 
16,3,1 使用pychecker和pylint检查源代码285 
16,3,2 分析288 
16,4 小结289 
16,4,1 本章的新函数290 
16,4,2 接下来学什么290 
第17章 扩展python 291 
17,1 考虑哪个更重要291 
17,2 非常简单的途径：jython和ironpython 292 
17,3 编写c语言扩展294 
17,3,1 swig 296 
17,3,2 自己研究299 
17,4 小结303 
17,4,1 本章的新函数304 
17,4,2 接下来学什么304 
第18章 程序打包305 
18,1 distutils基础305 
18,2 打包307 
18,2,1 建立存档文件307 
18,2,2 创建windows安装程序或rpm包308 
18,3 编译扩展309 
18,4 使用py2exe创建可执行程序310 
18,5 小结311 
18,5,1 本章的新函数311 
18,5,2 接下来学什么311 
第19章 好玩的编程312 
19,1 为什么要好玩312 
19,2 程序设计的柔术312 
19,3 原型设计313 
19,4 配置314 
19,4,1 提取常量314 
19,4,2 配置文件315 
19,5 日志记录317 
19,6 如果还没烦318 
19,7 如果还想学318 
19,8 小结319 
第20章 项目1：即时标记321 
20,1 问题是什么321 
20,2 有用的工具322 
20,3 准备工作322 
20,4 初次实现323 
20,4,1 找出文本块323 
20,4,2 添加一些标记324 
20,5 再次实现325 
20,5,1 处理程序326 
20,5,2 处理程序的超类326 
20,5,3 规则328 
20,5,4 规则的超类329 
20,5,5 过滤器329 
20,5,6 语法分析器329 
20,5,7 构造规则和过滤器330 
20,5,8 整合333 
20,6 进一步探索337 
第21章 项目2：画幅好画338 
21,1 问题338 
21,2 有用的工具339 
21,3 准备工作339 
21,4 初次实现340 
21,4,1 用reportlab画图340 
21,4,2 构造折线341 
21,4,3 编写原型342 
21,5 再次实现343 
21,5,1 获取数据343 
21,5,2 使用lineplot类344 
21,6 进一步探索345 
第22章 项目3：万能的xml 346 
22,1 问题346 
22,2 有用的工具347 
22,3 准备工作348 
22,4 初次实现349 
22,4,1 创建简单的内容处理程序349 
22,4,2 创建html页面351 
22,5 再次实现353 
22,5,1 调度程序的混入类353 
22,5,2 实现首部、页脚和默认的处理程序355 
22,5,3 对目录的支持355 
22,5,4 事件处理程序356 
22,6 进一步探索359 
第23章 项目4：新闻聚合360 
23,1 问题360 
23,2 有用的工具361 
23,3 准备工作361 
23,4 初次实现361 
23,5 再次实现364 
23,6 进一步探索370 
第24章 项目5：虚拟茶话会372 
24,1 问题372 
24,2 有用的工具372 
24,3 准备工作373 
24,4 初次实现374 
24,4,1 chatserver类374 
24,4,2 chatsession类375 
24,4,3 整合377 
24,5 再次实现378 
24,5,1 基础命令解释379 
24,5,2 房间379 
24,5,3 登录和退出房间380 
24,5,4 主聊天室380 
24,5,5 新的服务器381 
24,6 进一步探索385 
第25章 项目6：使用cgi进行远程编辑386 
25,1 问题386 
25,2 有用的工具386 
25,3 准备工作387 
25,4 初次实现387 
25,5 再次实现388 
25,5,1 创建文件名表单388 
25,5,2 创建编辑器的脚本389 
25,5,3 编写保存脚本390 
25,5,4 运行编辑器391 
25,6 进一步探索392 
第26章 项目7：自定义电子公告板394 
26,1 问题394 
26,2 有用的工具395 
26,3 准备工作395 
26,4 初次实现396 
26,5 再次实现399 
26,5,1 编写main脚本400 
26,5,2 编写view脚本401 
26,5,3 编写edit脚本402 
26,5,4 编写save脚本404 
26,5,5 尝试使用405 
26,6 进一步探索406 
第27章 项目8：使用xml-rpc进行文件共享407 
27,1 问题407 
27,2 有用的工具408 
27,3 准备工作408 
27,4 初次实现409 
27,4,1 实现一个简单的节点409 
27,4,2 尝试使用首次实现414 
27,5 再次实现415 
27,5,1 创建客户端界面415 
27,5,2 引发异常416 
27,5,3 验证文件名417 
27,5,4 尝试使用再次实现420 
27,6 进一步探索421 
第28章 项目9：文件共享2——gui版本422 
28,1 问题422 
28,2 有用的工具422 
28,3 准备工作422 
28,4 初次实现423 
28,5 再次实现425 
28,6 进一步探索428 
第29章 项目10：diy街机游戏429 
29,1 问题429 
29,2 有用的工具430 
29,2,1 pygame 430 
29,2,2 pygame,locals 430 
29,2,3 pygame,display 431 
29,2,4 pygame,font 431 
29,2,5 pygame,sprite 431 
29,2,6 pygame,mouse 432 
29,2,7 pygame,event 432 
29,2,8 pygame,image 432 
29,3 准备工作432 
29,4 初次实现433 
29,5 再次实现436 
29,6 进一步探索443 
附录a 简明版本444 
附录b python参考手册451 
附录c 在线资源462 
附录d python 3,0 465