前言
第一部分 使用入门第1章 问答环节
人们为何使用Python
软件质量
开发者效率
Python是“脚本语言”吗
好吧,Python的缺点是什么呢
如今谁在使用Python
使用Python可以做些什么
系统编程
用户图形接口
Internet脚本
组件集成
数据库编程
快速原型
数值计算和科学计算编程
游戏.图像.人工智能.XML.机器人等
Python有哪些技术上的优点
面向对象
免费
可移植
功能强大
可混合
使用简单
Python是工程,不是艺术
简单易学
名字来源于MontyPython
Python和其他语言比较起来怎么样
本章小结
头脑风暴
本章习题
习题解答
第2章 Python如何运行程序.
Python解释器简介
程序执行
程序员的视角
Python的视角
执行模块的变种
Python实现的替代者
执行优化工具
冻结二进制文件
未来的可能性
本章小结
头脑风暴
本章习题
习题解答
第3章 如何运行程序
交互模式下编写代码
在交互提示模式下测试代码
使用交互提示模式
系统命令行和文件
使用命令行和文件
UNIX可执行脚本(#!)
UNIXenv查找技巧
点击文件图标
在Windows中点击图标
raw_input的技巧
图标点击的其他限制
模块导入和重载
模块的显要特性:属性
import和reload的使用注意事项
IDLE用户界面
IDLE基础
使用IDLE
高级IDLE工具
其他的IDE
嵌入式调用
动付二进制的可执行性
文本编辑器启动的选择
其他的启动选择
未来的可能
我应该选用哪种
本章小结74..
头脑风暴
本章习题
习题解答
头脑风暴:第一部分 练习题
第二部分 类型和运算第4章 介绍Python对象类型.
为什么使用内置类型
Python的核心数据类型
数字
字符串
序列的操作
不可变性
类型特定的方法
寻求帮助
编写字符串的其他方法
模式匹配
列表
序列操作
类型特定的操作
边界检查
嵌套
列表解析
字典
映射操作
重访嵌套
键的排序:for循环
迭代和优化
不存在的键:if测试
元组
为什么要用元组
文件
其他文件类工具
其他核心类型
如何破坏代码的灵活性
用户定义的类
剩余的内容
本章小结
头脑风暴
本章习题
习题解答
第5章 数字
Python的数字类型
数字常量
内置数学工具和扩展
Python表达式操作符
混合操作所遵循的操作符优先级.
括号分组的子表达式
混合类型自动升级
预习:运算符重载
在实际应用中的数字
变量和基本的表达式
数字显示的格式
str和repr显示格式
除法:传统除法.Floor除法和真除法.
位操作
长整型数
复数
十六进制和八进制记数
其他的内置数学工具
其他数字类型
小数数字
集合
布尔型
第三方扩展
本章小结
头脑风暴
本章习题
习题解答
第6章 动态类型简介.
缺少类型声明语句的情况
变量.对象和引用
类型属于对象,而不是变量
对象的垃圾收集
共享引用
共享引用和在原处修改
共享引用和相等
动态类型随处可见
本章小结
头脑风暴
本章习题
习题解答
第7章 字符串
字符串常量
单双引号字符串是一样的
用转义序列代表特殊字节
字符串抑制转义
三重引号编写多行字符串块
字符串编码更大的字符集
实际应用中的字符串
基本操作
索引和分片
为什么要在意:分片
字符串转换工具
修改字符串
字符串格式化
更高级的字符串格式化
基于字典的字符串格式化
字符串方法
字符串方法实例:修改字符串
字符串方法实例:文本解析
实际应用中的其他常见字符串方法
最初的字符串模块
通常意义下的类型分类
同样分类的类型共享其操作集合
可变类型能够在原处修改
本章小结
头脑风暴
本章习题
习题解答
第8章 列表与字典.
列表
实际应用中的列表
基本列表操作
索引.分片和矩阵
原处修改列表
字典
实际应用中的字典
字典的基本操作
原处修改字典
其他字典方法
语言表
字典用法注意事项
为什么要在意字典接口
本章小结
头脑风暴
本章习题
习题解答
第9章 元组.文件及其他
元组
实际应用中的元组
为什么有了列表还要元组
文件
打开文件
使用文件
实际应用中的文件
其他文件工具
重访类型分类
为什么要在意操作符重载
对象灵活性
引用VS拷贝
比较.相等性和真值
Python中真和假的含义
Python的类型层次
Python中的其他类型
内置类型陷阱
赋值生成引用,而不是拷贝
重复能够增加层次深度.
留意循环数据结构
不可变类型不可以在原处改变
本章小结
头脑风暴
本章习题
习题解答
头脑风暴:第二部分 练习题
第三部分 语句和语法第10章 Python语句简介.
重访Python程序结构
Python的语句
两个if的故事
Python增加了什么
Python删除了什么
终止行就是终止语句
为什么使用缩进语法
几个特殊实例
简短实例:交互循环
一个简单的交互式循环
对用户输入数据做数学运算
用测试输入数据来处理错误
用try语句处理错误
嵌套代码三层
本章小结
头脑风暴
本章习题
习题解答
第11章 赋值.表达式和打印
赋值语句
赋值语句的形式
序列赋值
多目标赋值语句
增强赋值语句
变量命名规则
表达式语句
表达式语句和在原处的修改
打印语句
Python的“HelloWorld”程序
重定向输出流
print〉〉file扩展
本章小结
头脑风暴
本章习题
习题解答
第12章 if测试.
if语句
通用格式
基本例子
多路分支
Python语法规则
代码块分隔符
语句的分隔符
一些特殊情况
真值测试
if/else三元表达式
为什么要在意布尔值
本章小结
头脑风暴
本章习题
习题解答
第13章 while和for循环
while循环
一般格式
例子
break.continue.pass和循环else
一般循环格式
例子
为什么要在意“模拟C语言的while循环”
for循环
一般格式
例子
为什么要在意“文件扫描”
迭代器:初探
文件迭代器
其他内置类型迭代器
其他迭代环境
用户定义的迭代器
编写循环的技巧
循环计数器:while和range
非完备遍历:range
修改列表:range
并行遍历:zip和map
产生偏移和元素:enumerate
列表解析:初探
列表解析基础
对文件使用列表解析
扩展列表解析语法
本章小结
头脑风暴
本章习题
习题解答
第14章 文档
Python文档资源
#注释
dir函数
文档字符串:__doc__
PyDoc:help函数
PyDoc:HTML报表
标准手册集
网络资源
已出版的书籍.
常见编写代码的陷阱
本章小结
头脑风暴
本章习题
习题解答
头脑风暴:第三部分 练习题
第四部分 函数第15章 函数基础
为何使用函数
编写函数
def语句
def语句是实时执行的
第一个例子:定义和调用
定义
调用
Python中的多态
第二个例子:寻找序列的交集
定义
调用
重访多态
本地变量
本章小结
头脑风暴
本章习题
习题解答
第16章 作用域和参数
作用域法则
函数作用域基础
变量名解析:LEGB原则
作用域实例
内置作用域
global语句
最小化全局变量
最小化文件间的修改
其他访问全局变量的方法
作用域和嵌套函数
嵌套作用域的细节
嵌套作用域举例
传递参数
参数和共享引用
避免可变参数的修改
对参数输出进行模拟
特定的参数匹配模型
关键字参数和默认参数的实例
任意参数的实例
关键字参数和默认参数的混合
min调用
一个更有用的例子:通用set函数
参数匹配:细节
为什么要在意:关键字参数
本章小结
头脑风暴
本章习题
习题解答
第17章 函数的高级话题.
匿名函数:lambda
lambda表达式
为什么使用lambda
如何(不要)让Python代码变得晦涩难懂
嵌套lambda和作用域
作为参数来应用函数
内置函数apply
为什么要在意:回调
传入关键字参数
和apply类似的调用语法
在序列中映射函数:map
函数式编程工具:filter和reduce
重访列表解析:映射
列表解析基础
增加测试和嵌套循环
列表解析和矩阵
理解列表解析
为什么要在意:列表解析和map
重访迭代器:生成器
生成器函数实例
扩展生成器函数协议:send和next
迭代器和内置类型
生成器表达式:迭代器遇到列表解析
对迭代的各种方法进行计时
函数设计概念
函数是对象:简洁调用
函数陷阱
本地变量是静态检测的
默认和可变对象
没有return语句的函数
嵌套作用域的循环变量
本章小结
头脑风暴
本章习题
习题解答
头脑风暴:第四部分 练习题
第五部分 模块第18章 模块:宏伟蓝图.
为什么使用模块
Python程序构架
如何组织一个程序
导入和属性
标准库模块
import如何工作
搜索
编译(可选)
运行
第三方工具:distutils
本章小结
头脑风暴
本章习题
习题解答
第19章 模块代码编写基础.
模块的创建
模块的使用
import语句
from语句
from*语句
导入只发生一次
import和from是赋值语句
文件间变量名的改变
import和from的对等性
from语句潜在的陷阱
模块命名空间
文件生成命名空间
属性名的点号运算
导入和作用域
命名空间的嵌套
重载模块
reload基础
reload实例
为什么要在意:模块重载
本章小结
头脑风暴
本章习题
习题解答
第20章 模块包
包导入基础
包和搜索路径设置
__init__.py包文件
包导入实例
包对应的from和import
为什么要使用包导入
三个系统的传说
为什么要在意:模块包
本章小结
头脑风暴
本章习题
习题解答
第21章高级模块话题
在模块中隐藏数据
最小化from*的破坏:_X和__all__.
启用以后的语言特性
混合用法模式:__name__和__main__
以__name__进行单元测试
修改模块搜索路径
importas扩展
相对导入语法
为什么使用相对导入
模块设计理念
模块是对象:元程序
模块陷阱
顶层代码的语句次序的重要性
通过变量名字符串导入模块
from复制变量名,而不是连接
from*会让变量语义模糊
reload不会影响from导入
reload.from以及交互模式测试
reload的使用没有传递性
递归形式的fromimport无法工作
本章小结
头脑风暴
本章习题
习题解答
头脑风暴:第五部分 练习题
第六部分 类和OOP第22章OOP:宏伟蓝图
为何使用类
概览OOP
属性继承搜索
类和实例
类方法调用
编写类树
OOP是为了代码重用
本章小结
头脑风暴
本章习题
习题解答
第23章类代码编写基础.
类产生多个实例对象
类对象提供默认行为
实例对象是具体的元素
第一个例子
类通过继承进行定制
第二个例子
类是模块内的属性
类可以截获Python运算符
第三个例子
为什么要使用运算符重载
世界上最简单的Python类
本章小结
头脑风暴
本章习题
习题解答
第24章类代码编写细节.
class语句
一般形式
例子
方法
例子
调用超类的构造器
其他方法调用的可能性
继承
属性树的构造
继承方法的专有化
类接口技术
抽象超类
运算符重载
常见的运算符重载方法
__getitem__拦截索引运算
__getitem__和__iter__实现迭代
用户定义的迭代器
__getattr__和__setattr__捕捉属性的引用
模拟实例属性的私有性
__repr__和__str__会返回字符串表达形式
__radd__处理右侧加法
__call__拦截调用
函数接口和回调代码
__del__是析构器
命名空间:完整的内容
简单变量名:如果赋值就不是全局变量
属性名称:对象命名空间
Python命名空间的“禅”:赋值将变量名分类
命名空间字典
命名空间链接
一个更实际的例子
本章小结
头脑风暴
本章习题
习题解答
第25章类的设计
Python和OOP
通过调用标记进行重载(或不要)
类作为记录
类和继承:“是一个”关系
类和组合:“有一个”关系
重访流处理器
为什么要在意:类和持续性
OOP和委托
多重继承
类是对象:通用对象的工厂
为什么有工厂
方法是对象:绑定或无绑定
重访文档字符串
为什么要在意:绑定方法和回调函数
类和模块
本章小结
头脑风暴
本章习题
习题解答
第26章类的高级主题
扩展内置类型
通过嵌入扩展类型
通过子类扩展类型
类的伪私有属性
变量名压缩概览
为什么使用伪私有属性
新式类
钻石继承变动
其他新式类的扩展
静态和类方法
使用静态和类方法
函数装饰器
装饰器例子
类陷阱
修改类属性的副作用
多重继承:顺序很重要
类.方法以及嵌套作用域
“过度包装”
本章小结
头脑风暴
本章习题
习题解答
头脑风暴:第六部分 练习题
第七部分 异常和工具第27章异常基础
为什么使用异常
异常的角色
异常处理:简明扼要
try/except/else语句
try语句分句
try/else分句
例子:默认行为
例子:捕捉内置异常
try/finally语句
例子:利用try/finally编写终止行为
统一try/except/finally
通过嵌套合并finally和except
合并try的例子
raise语句
例子:引发并捕捉用户定义的异常
例子:利用raise传入额外的数据
例子:利用raise传递异常
assert语句
例子:收集约束条件(但不是错误)
with/as环境管理器
基本使用
环境管理协议
为什么要在意:错误检查
本章小结
头脑风暴
本章习题
习题解答
第28章异常对象
基于字符串的异常
字符串异常就要出局了
基于类的异常
类异常例子
为什么使用类异常
内置Exception类
定义异常文本
发送额外数据和实例行为
raise语句的一般形式
本章小结
头脑风暴
本章习题
习题解答
第29章异常的设计
嵌套异常处理器
例子:控制流程嵌套
例子:语法嵌套化
异常的习惯用法
异常不总是错误
函数信号条件和raise
在try外进行调试
运行进程中的测试
关于sys.exc_info
与异常有关的技巧
应该包装什么
捕捉太多:避免空except语句
捕捉过少:使用基于类的分类
异常陷阱
字符串异常匹配是通过同一性而不是通过值
捕捉到错误的异常
核心语言总结
Python工具集
大型项目的开发工具
本章小结
头脑风暴
本章习题
习题解答
头脑风暴:第七部分 练习题
第八部分 附录
附录A安装和配置
附录B每部分练习题解答