前言
第一部分 程序设计语言Python
第1章 欢迎使用Python 1
1.1 什么是Python语言 1
1.2 Python语言的历史 1
1.3 Python语言的特色 1
1.4 获得Python语言 5
1.5 安装Python语言 6
1.6 运行Python语言 7
1.6.1 命令行上的交互式解释器 7
1.6.2 命令行上的脚本程序 9
1.6.3 集成开发环境 10
1.7 Python语言的文档 13
1.8 Python与其他语言的比较 13
1.9 JPython的特色 14
1.10 练习 15
第2章 快速入门 16
2.1 程序输出、print语句和“Hello World !” 16
2.2 程序输入和raw_input( ) 内建函数 17
2.3 程序注释 17
2.4 操作符 17
2.5 变量和赋值 19
2.6 数字 19
2.7 字符串 20
2.8 列表和表列 20
2.9 字典 21
2.10 代码段使用缩进 22
2.11 if语句 22
2.12 while循环 23
2.13 for循环和range( )内建函数 23
2.14 文件和open( )内建函数 25
2.15 错误和例外 26
2.16 函数 26
2.17 类 27
2.18 模块 29
2.19 练习 31
第3章 语法和程序设计风格 34
3.1 语句和语法 34
3.2 变量分配 36
3.3 标识符 38
3.4 程序设计风格准则 39
3.4.1 模块的结构和布局 40
3.4.2 在主体部分里加上测试方面的内容 42
3.5 内存管理 43
3.5.1 变量定义 43
3.5.2 动态确定变量的类型 43
3.5.3 内存分配 43
3.5.4 废弃物回收 44
3.5.5 引用计数 44
3.5.6 del语句 44
3.5.7 减少引用计数 45
3.6 第一个Python应用程序 45
3.7 练习 49
第4章 对象 50
4.1 Python语言中的对象 50
4.2 标准数据类型 51
4.3 其他内建的数据类型 51
4.3.1 type类型和type()内建函数 52
4.3.2 None空类型 52
4.4 内部数据类型 52
4.4.1 代码对象 53
4.4.2 框架对象 53
4.4.3 跟踪记录对象 53
4.4.4 序列切片对象 53
4.4.5 Ellipsis对象 54
4.4.6 Xrange对象 54
4.5 与数据类型有关的标准操作符 55
4.5.1 值的比较 55
4.5.2 对象实体的比较 56
4.5.3 布尔表达式 58
4.6 与数据类型有关的标准内建函数 59
4.6.1 cmp( ) 59
4.6.2 str()和repr() 59
4.6.3 深入type() 60
4.7 标准数据类型的分类 63
4.7.1 存储模型 64
4.7.2 修改模型 64
4.7.3 访问模型 66
4.8 Python语言不支持的数据类型 67
4.9 练习 68
第5章 数字 69
5.1 数字简介 69
5.2 整数 69
5.2.1 (普通)整数 70
5.2.2 长整数 70
5.3 浮点实数 70
5.4 复数 71
5.5 操作符 72
5.5.1 混状态操作符 72
5.5.2 标准类型的操作符 74
5.5.3 数值类型操作符 74
5.5.4 *位操作符 76
5.6 内建函数 77
5.6.1 标准类型函数 77
5.6.2 数值类型函数 78
5.6.3 只适用于整数的函数 82
5.7 相关模块 83
5.8 练习 85
第6章 序列:字符串、列表和表列 88
6.1 序列 88
6.1.1 操作符 88
6.1.2 内建函数 92
6.2 字符串 93
6.3 字符串和操作符 94
6.3.1 标准类型操作符 94
6.3.2 序列操作符 95
6.4 只作用于字符串的操作符 99
6.4.1 格式操作符(%) 99
6.4.2 生字符串操作符(r/R) 102
6.4.3 Unicode字符串操作符(u/U) 103
6.5 内建函数 103
6.5.1 标准类型函数 103
6.5.2 序列类型函数 104
6.5.3 字符串类型函数 104
6.6 字符串的内建方法 104
6.7 字符串的特性 107
6.7.1 特殊或控制字符 107
6.7.2 三引号 108
6.7.3 字符串的不可变性 109
6.7.4 Unicode支持 111
6.7.5 Python语言没有字符或数组 112
6.8 相关模块 113
6.9 字符串总结 114
6.10 列表 115
6.11 操作符 117
6.11.1 标准类型操作符 117
6.11.2 序列类型操作符 117
6.11.3 列表类型操作符 120
6.12 内建函数 120
6.12.1 标准类型函数 120
6.12.2 序列类型函数 121
6.12.3 列表类型内建函数 123
6.13 列表类型的内建方法 123
6.14 列表的特性 125
6.14.1 利用列表创建其他数据结构 125
6.14.2 列表的子类 130
6.15 表列 131
6.16 表列的操作符和内建函数 132
6.16.1 标准和序列操作符与内建函数 132
6.16.2 表列类型操作符和内建函数及方法 133
6.17 表列的特性 133
6.17.1 不可变性对表列有何影响 133
6.17.2 表列也不是绝对“不可变的” 133
6.17.3 括号的作用 134
6.17.4 单元素表列 135
6.18 相关模块 136
6.19 *浅拷贝与深拷贝 137
6.20 练习 141
第7章 字典数据类型 144
7.1 字典简介 144
7.2 操作符 147
7.2.1 标准类型操作符 147
7.2.2 字典的键字检索操作符[ ] 147
7.3 内建函数 148
7.3.1 标准类型函数type()、str()
和cmp() 148
7.3.2 映射类型函数len() 150
7.4 内建方法 150
7.5 字典键字 152
7.5.1 不允许一个键字对应一个以上的
数据项 153
7.5.2 键字必须是不可变的 153
7.6 练习 156
第8章 条件语句和循环语句 159
8.1 if语句 159
8.1.1 多重条件表达式 159
8.1.2 单语句子句 159
8.2 else语句 159
8.3 elif语句 161
8.4 while语句 161
8.4.1 一般语法 161
8.4.2 计数循环 162
8.4.3 无限循环 162
8.4.4 单语句子句 163
8.5 for语句 163
8.5.1 一般语法 163
8.5.2 与序列类型一起使用 163
8.5.3 switch/case语句的代理 164
8.5.4 range()内建函数 165
8.6 break语句 167
8.7 continue语句 167
8.8 pass语句 168
8.9 else语句之二 169
8.10 练习 170
第9章 文件和输入/输出操作 173
9.1 文件对象 173
9.2 文件的内建函数 173
9.3 文件的内建方法 175
9.3.1 输入 175
9.3.2 输出 175
9.3.3 文件内移动 175
9.3.4 其他 176
9.3.5 其他各种文件方法 176
9.4 文件的内建属性 179
9.5 标准文件 179
9.6 命令行参数 180
9.7 文件系统 181
9.8 文件的执行 186
9.9 永久性存储模块 186
9.9.1 pickle和marshal模块 187
9.9.2 DBM风格的模块 187
9.9.3 shelve模块 187
9.10 相关模块 189
9.11 练习 190
第10章 错误和例外处理 193
10.1 什么是例外 193
10.1.1 错误 193
10.1.2 例外 194
10.2 Python语言中的例外 194
10.3 检测和处理例外 196
10.3.1 try-except语句 196
10.3.2 打包一个内建函数 197
10.3.3 带多个except的try语句 199
10.3.4 处理多个例外的except语句 200
10.3.5 不带例外名参数的try-except语句 201
10.3.6 例外参数 202
10.3.7 把打过包的函数用在一个应用程
序里 204
10.3.8 else从句 206
10.3.9 try-except语句用法总结 206
10.3.10 try-finally语句 207
10.4 *例外的字符串形式 209
10.5 *例外的类形式 210
10.5.1 通过对象的标识符进行挑选 211
10.5.2 例外之间的关系 211
10.6 引发例外 212
10.7 确认 214
10.8 标准例外 215
10.9 *创建例外 216
10.10 为什么会发生例外 222
10.11 为什么要有例外 222
10.12 例外和sys模块 223
10.13 相关模块 224
10.14 练习 224
第11章 函数 226
11.1 什么是函数 226
11.1.1 函数与过程的比较 226
11.1.2 返回值和函数类型 226
11.2 函数的调用 228
11.2.1 函数操作符 228
11.2.2 关键字参数 228
11.2.3 缺省参数 228
11.3 函数的创建 229
11.3.1 def语句 229
11.3.2 函数声明与函数定义的比较 229
11.3.3 向前引用 229
11.4 函数可以用做其他函数的参数 230
11.5 正式参数 231
11.5.1 位置参数 232
11.5.2 缺省参数 232
11.6 可变长参数 235
11.6.1 非关键字可变长参数 235
11.6.2 关键字可变长参数 236
11.6.3 调用带有可变长参数对象的函数 238
11.7 函数化的程序设计 239
11.7.1 匿名函数和lambda 239
11.7.2 内建函数:apply()、filter()、map()、reduce() 241
11.8 变量的作用范围 253
11.8.1 全局变量和局部变量的比较 254
11.8.2 global语句 255
11.8.3 作用范围到底有几个 255
11.8.4 作用范围的其他特性 256
11.9 *递归 257
11.10 练习 258
第12章 模块 261
12.1 什么是模块 261
12.2 模块和文件 261
12.2.1 名字空间基本概念 261
12.2.2 搜索路径和路径搜索 262
12.3 名字空间 263
12.3.1 名字空间与变量作用范围的比较 264
12.3.2 名字的查找、确定作用范围和覆盖 264
12.4 导入模块 265
12.4.1 模块加载时的执行情况 265
12.4.2 导入与加载的比较 266
12.5 导入模块属性 266
12.5.1 把名字导入当前名字空间 266
12.5.2 被导入到导入者作用范围的名字 266
12.6 模块的内建函数 267
12.6.1 __import__() 267
12.6.2 globals()和locals() 268
12.6.3 reload() 268
12.7 软件包 269
12.7.1 目录结构 269
12.7.2 软件包的from-import语句操作 270
12.8 模块的其他特性 270
12.8.1 自动加载模块 270
12.8.2 阻止某个属性的导入 271
12.9 练习 271
第13章 类和OOP 272
13.1 简介 272
13.2 面向对象的程序设计 277
13.2.1 OOD和OOP之间的联系 278
13.2.2 现实世界中的问题 278
13.2.3 抽象世界里的模型 279
13.3 类 281
13.3.1 类的创建 282
13.3.2 声明和定义的比较 282
13.4 类的属性 282
13.4.1 *类的数据属性 283
13.4.2 方法 283
13.4.3 确定类的属性 284
13.4.4 类的特殊属性 285
13.5 实例 286
13.5.1 实例化:调用类对象创建实例 287
13.5.2 __init__() 构造器方法 287
13.5.3 __del__() 拆除器方法 288
13.6 实例的属性 289
13.6.1 “实例化”实例的属性 289
13.6.2 确定实例的属性 291
13.6.3 实例的特殊属性 292
13.6.4 内建类型的属性 293
13.6.5 实例属性和类属性的比较 293
13.7 绑定和方法的调用 295
13.7.1 调用绑定方法 296
13.7.2 调用未绑定方法 297
13.8 构造 298
13.9 子类的分离和推导 299
13.10 继承性 300
13.10.1 类属性__bases__ 301
13.10.2 通过继承覆盖掉方法 302
13.10.3 对标准类型进行推导 303
13.10.4 多重继承 304
13.11 类、实例和其他对象的内建函数 304
13.11.1 issubclass() 304
13.11.2 isinstance() 305
13.11.3 hasattr()、getattr()、setattr()、
delattr() 307
13.11.4 dir() 308
13.11.5 vars() 308
13.12 类型和类/实例的比较 309
13.13 用特殊方法对类进行定制 310
13.13.1 对类进行简单定制的例子 312
13.13.2 *对类进行较复杂定制的例子 314
13.14 私密性 319
13.15 对类型进行打包 319
13.15.1 打包 319
13.15.2 实现对类型进行的打包 320
13.16 相关模块和文档 326
13.17 练习 328
第14章 执行环境 333
14.1 可调用对象 333
14.1.1 函数 334
14.1.2 方法 335
14.1.3 类 337
14.1.4 类的实例 338
14.2 代码对象 338
14.3 可执行对象语句和内建函数 339
14.3.1 callable() 339
14.3.2 compile() 340
14.3.3 eval() 341
14.3.4 exec 341
14.3.5 input() 346
14.3.6 内置字符串和intern() 347
14.4 执行其他Python程序 348
14.4.1 导入 348
14.4.2 execfile() 349
14.5 执行其他非Python程序 349
14.5.1 os.system() 351
14.5.2 os.popen()只适用于UNIX和
Windows 351
14.5.3 os.fork()、os.exec*()、os.wait*()
只适用于UNIX 352
14.5.4 os.spawn*()只适用于Windows 354
14.5.5 其他函数 354
14.6 受限执行环境 354
14.7 中断程序的执行 357
14.7.1 sys.exit()和SystemExit 357
14.7.2 sys.exitfunc() 358
14.7.3 os._exit()函数 359
14.8 相关模块 359
14.9 练习 360
第二部分 高 级 论 题
第15章 规则表达式 361
15.1 介绍与动机 361
15.2 规则表达式使用的特殊符号和字符 363
15.3 规则表达式和Python语言 368
15.3.1 re模块的核心函数和方法 368
15.3.2 re模块的其他函数和方法 375
15.4 规则表达式的使用示例 379
15.5 练习 385
第16章 网络程序设计 388
16.1 介绍 388
16.1.1 什么是客户-服务器体系结构 388
16.1.2 客户-服务器网络程序设计 390
16.2 套接字:通信端点 391
16.2.1 什么是套接字 391
16.2.2 套接字地址:主机加端口 391
16.2.3 面向连接方式和无连接方式 392
16.3 使用Python语言进行网络程序设计 393
16.3.1 socket()模块函数 393
16.3.2 套接字对象的内建方法 393
16.3.3 创建一个TCP服务器 394
16.3.4 创建一个TCP客户 396
16.3.5 执行TCP客户-服务器应用程序 397
16.3.6 创建一个UDP服务器 398
16.3.7 创建一个UDP客户 399
16.3.8 执行UDP客户-服务器应用程序 400
16.3.9 其他socket模块函数 401
16.4 相关模块 401
16.5 练习 402
第17章 多线程程序设计 404
17.1 介绍 404
17.2 线程和进程 405
17.2.1 什么是进程 405
17.2.2 什么是线程 405
17.3 线程和Python 406
17.3.1 全局性解释器锁 406
17.3.2 退出线程 407
17.3.3 从Python访问线程 407
17.3.4 不使用线程时的程序设计情况 407
17.3.5 Python语言中的线程化模块 408
17.4 thread模块 409
17.5 threading模块 412
17.5.1 Thread类 413
17.5.2 菲波那契数列、阶乘、连加和 418
17.5.3 制造商-消费者问题和Queue模块 419
17.6 练习 422
第18章 使用Tkinter进行GUI程序设计 423
18.1 介绍 423
18.1.1 什么是Tcl、Tk和Tkinter 423
18.1.2 安装Tkinter并使它工作 423
18.1.3 再论客户-服务器体系结构 424
18.2 Tkinter和Python程序设计 424
18.2.1 Tkinter模块:把Tk添加到应用
程序中去 424
18.2.2 GUI程序设计简介 425
18.2.3 顶层窗口:Tkinter.Tk() 426
18.2.4 Tk素材 426
18.3 Tkinter程序示例 427
18.3.1 Label素材 427
18.3.2 Button素材 428
18.3.3 Label和Button素材 429
18.3.4 Label、Button和Scale素材 430
18.3.5 中规模Tkinter程序示例 431
18.4 相关模块和其他GUI 436
18.5 练习 436
第19章 Web程序设计 438
19.1 介绍 438
19.1.1 网上冲浪:客户-服务器计算 438
19.1.2 因特网 439
19.2 用Python网上冲浪:编写简单的Web
客户 441
19.2.1 统一资源定位器 441
19.2.2 urlparse模块 442
19.2.3 urllib模块 443
19.3 高级Web客户 446
19.4 CGI:帮助Web服务器处理客户数据 451
19.4.1 CGI简介 451
19.4.2 CGI应用程序 452
19.4.3 cgi模块 452
19.5 建立CGI应用程序 453
19.5.1 制作结果网页 453
19.5.2 制作表单和结果主页 456
19.5.3 完全以交互方式运行的Web站点 459
19.6 高级CGI 464
19.6.1 包含多个组成部分的表单的提交
操作和文件的上传 464
19.6.2 多取值输入域 465
19.6.3 cookie 465
19.6.4 高级CGI实战 466
19.7 Web服务器 474
19.8 相关模块 477
19.9 练习 478
第20章 扩展Python语言 483
20.1 介绍 483
20.1.1 什么是扩展 483
20.1.2 为什么要扩展Python语言 483
20.2 用编写扩展的办法扩展Python语言 484
20.2.1 编写应用程序代码 484
20.2.2 给代码加上程序接口 486
20.2.3 编译 490
20.2.4 引用的计数 494
20.2.5 线程化和GIL方面的考虑 495
20.3 相关论题 495
20.4 练习 496
第三部分 附 录
附录A 部分练习答案 497
附录B 参考信息 503
附录C Python操作符汇总 511
附录D Python版本2.0的新增功能 513
· · · · · · (
收起)