第 1章 快速上手:基础知识1
1.1 交互式解释器1
1.2 算法是什么2
1.3 数和表达式3
1.4 变量4
1.5 语句5
1.6 获取用户输入6
1.7 函数7
1.8 模块8
1.8.1 cmath和复数9
1.8.2 回到未来9
1.9 保存并执行程序10
1.9.1 从命令提示符运行Python
脚本11
1.9.2 让脚本像普通程序一样11
1.9.3 注释12
1.10 字符串13
1.10.1 单引号字符串以及对引号
转义13
1.10.2 拼接字符串14
1.10.3 字符串表示str和repr14
1.10.4 长字符串、原始字符串和
字节15
1.11 小结20
1.11.1 本章介绍的新函数20
1.11.2 预告21
第 2章 列表和元组22
2.1 序列概述22
2.2 通用的序列操作23
2.2.1 索引23
2.2.2 切片25
2.2.3 序列相加27
2.2.4 乘法27
2.2.5 成员资格28
2.3 列表:Python的主力30
2.3.1 函数list30
2.3.2 基本的列表操作30
2.3.3 列表方法31
2.4 元组:不可修改的序列37
2.5 小结38
2.5.1 本章介绍的新函数39
2.5.2 预告39
第3章 使用字符串40
3.1 字符串基本操作40
3.2 设置字符串的格式:精简版40
3.3 设置字符串的格式:完整版42
3.3.1 替换字段名42
3.3.2 基本转换43
3.3.3 宽度、精度和千位分隔符44
3.3.4 符号、对齐和用0填充45
3.4 字符串方法47
3.4.1 center47
3.4.2 find47
3.4.3 join48
3.4.4 lower49
3.4.5 replace49
3.4.6 split50
3.4.7 strip50
3.4.8 translate51
3.4.9 判断字符串是否满足特定的
条件51
3.5 小结51
3.5.1 本章介绍的新函数52
3.5.2 预告52
第4章 字典53
4.1 字典的用途53
4.2 创建和使用字典54
4.2.1 函数dict54
4.2.2 基本的字典操作54
4.2.3 将字符串格式设置功能用于
字典56
4.2.4 字典方法57
4.3 小结62
4.3.1 本章介绍的新函数62
4.3.2 预告62
第5章 条件、循环及其他语句63
5.1 再谈print和import63
5.1.1 打印 多个参数63
5.1.2 导入时重命名64
5.2 赋值魔法65
5.2.1 序列解包65
5.2.2 链式赋值66
5.2.3 增强赋值66
5.3 代码块:缩进的乐趣67
5.4 条件和条件语句67
5.4.1 这正是布尔值的用武之地68
5.4.2 有条件地执行和if语句69
5.4.3 else子句69
5.4.4 elif子句70
5.4.5 代码块嵌套70
5.4.6 复杂的条件70
5.4.7 断言74
5.5 循环75
5.5.1 while循环75
5.5.2 for循环76
5.5.3 迭代字典77
5.5.4 一些迭代工具77
5.5.5 跳出循环79
5.5.6 循环中的else子句81
5.6 简单推导81
5.7 三人行83
5.7.1 什么都不做83
5.7.2 使用del删除83
5.7.3 使用exec和eval执行字符串及计算其结果84
5.8 小结86
5.8.1 本章介绍的新函数87
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 作用域104
6.6 递归106
6.6.1 两个经典案例:阶乘和幂107
6.6.2 另一个经典案例:二分查找108
6.7 小结111
6.7.1 本章介绍的新函数111
6.7.2 预告112
第7章 面向对象113
7.1 对象魔法113
7.1.1 多态113
7.1.2 多态和方法115
7.1.3 封装116
7.1.4 继承118
7.2 类118
7.2.1 类到底是什么118
7.2.2 创建自定义类119
7.2.3 属性、函数和方法120
7.2.4 再谈隐藏120
7.2.5 类的命名空间122
7.2.6 超类123
7.2.7 深入探讨继承124
7.2.8 多个超类124
7.2.9 接口和内省125
7.2.10 抽象基类126
7.3 关于面向对象设计的一些思考128
7.4 小结128
7.4.1 本章介绍的新函数129
7.4.2 预告129
第8章 异常130
8.1 异常是什么130
8.2 让事情沿你 的轨道出错130
8.2.1 raise语句130
8.2.2 自定义的异常类131
8.3 捕获异常132
8.3.1 不用提供参数132
8.3.2 多个except子句134
8.3.3 一箭双雕134
8.3.4 捕获对象135
8.3.5 一网打尽135
8.3.6 万事大吉时136
8.3.7 137
8.4 异常和函数138
8.5 异常之禅138
8.6 不那么异常的情况140
8.7 小结141
8.7.1 本章介绍的新函数141
8.7.2 预告141
第9章 魔法方法、特性和迭代器142
9.1 构造函数142
9.1.1 重写普通方法和特殊的构造
函数143
9.1.2 调用未关联的超类构造函数145
9.1.3 使用函数super145
9.2 元素访问146
9.2.1 基本的序列和映射协议147
9.2.2 从list、dict和str派生149
9.3 其他魔法方法150
9.4 特性150
9.4.1 函数property151
9.4.2 静态方法和类方法152
9.4.3 __getattr__、__setattr__等方法153
9.5 迭代器154
9.5.1 迭代器协议154
9.5.2 从迭代器创建序列156
9.6 生成器156
9.6.1 创建生成器156
9.6.2 递归式生成器157
9.6.3 通用生成器159
9.6.4 生成器的方法159
9.6.5 模拟生成器160
9.7 八皇后问题161
9.7.1 生成器的回溯161
9.7.2 问题161
9.7.3 状态表示162
9.7.4 检测冲突162
9.7.5 基线条件163
9.7.6 递归条件163
9.7.7 扫尾工作165
9.8 小结165
9.8.1 本章介绍的新函数166
9.8.2 预告166
第 10章 模块167
10.1 模块概述167
10.1.1 模块就是程序167
10.1.2 模块是用来下定义的169
10.1.3 让模块可用171
10.1.4 包172
10.2 探索模块173
10.2.1 模块包含什么173
10.2.2 使用help获取帮助174
10.2.3 文档175
10.2.4 使用源代码176
10.3 标准库:一些深受欢迎的模块176
10.3.1 sys176
10.3.2 os178
10.3.3 fileinput180
10.3.4 集合、堆和双端队列181
10.3.5 time186
10.3.6 random187
10.3.7 shelve和json190
10.3.8 re193
10.3.9 其他有趣的标准模块205
10.4 小结207
10.4.1 本章介绍的新函数207
10.4.2 预告207
第 11章 文件208
11.1 打开文件208
11.2 文件的基本方法209
11.2.1 读取和写入210
11.2.2 使用管道重定向输出210
11.2.3 读取和写入行212
11.2.4 关闭文件212
11.2.5 使用文件的基本方法213
11.3 迭代文件内容215
11.3.1 每次一个字符(或字节)215
11.3.2 每次一行216
11.3.3 读取所有内容216
11.3.4 使用fileinput实现延迟行迭代216
11.3.5 文件迭代器217
11.4 小结218
11.4.1 本章介绍的新函数218
11.4.2 预告218
第 12章 图形用户界面219
……