本书是经典的Python指导书,在第一版的基础上进行了全面升级。全书分为两个部分:第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等内容:第2部分则提供了各种高级主题来展示可以使用Python做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、Web编程、数据库编程、扩展Python 和一些其他材料。
本书适合Python初学者,以及已经入门但想继续学习和提高自身Python技巧的程序员。
目 录
第1部分 Python核心
第1章 欢迎来到Python世界3
1.1 什么是Python4
1.2 起源4
1.3 特点4
1.3.1 高级4
1.3.2 面向对象5
1.3.3 可升级5
1.3.4 可扩展5
1.3.5 可移植性5
1.3.6 易学6
1.3.7 易读6
1.3.8 易维护6
1.3.9 健壮性6
1.3.10 高效的快速原型开发工具6
1.3.11 内存管理器7
1.3.12 解释性和(字节)编译性7
1.4 下载和安装Python7
1.5 运行Python8
1.5.1 命令行上的交互式解释器9
1.5.2 从命令行启动脚本10
1.5.3 集成开发环境11
1.5.4 其他的集成开发环境和执行环境14
1.6 Python文档15
1.7 比较Python(Python与其他语言的比较)15
1.8 其他实现17
1.9 练习18
第2章 快速入门19
2.1 程序输出,print语句及“Hello World!”20
2.2 程序输入和raw_input()内建函数21
2.3 注释22
2.4 操作符22
2.5 变量和赋值24
2.6 数字24
2.7 字符串25
2.8 列表和元组26
2.9 字典26
2.10 代码块及缩进对齐27
2.11 if语句27
2.12 while循环28
2.13 for循环和range()内建函数28
2.14 列表解析30
2.15 文件和内建函数open()、file()30
2.16 错误和异常31
2.17 函数32
2.17.1 如何定义函数32
2.17.2 如何调用函数32
2.17.3 默认参数33
2.18 类33
2.19 模块35
2.19.1 如何导入模块35
2.19.2 如何访问一个模块函数或访问一个模块变量35
2.20 实用的函数36
2.21 练习36
第3章 Python基础39
3.1 语句和语法40
3.1.1 注释(#)40
3.1.2 继续(\)40
3.1.3 多个语句构成代码组(:)41
3.1.4 代码组由不同的缩进分隔41
3.1.5 同一行书写多个语句(;)41
3.1.6 模块41
3.2 变量赋值42
3.2.1 赋值操作符42
3.2.2 增量赋值42
3.2.3 多重赋值43
3.2.4 “多元”赋值43
3.3 标识符44
3.3.1 合法的Python标识符44
3.3.2 关键字44
3.3.3 内建45
3.3.4 专用下划线标识符45
3.4 基本风格指南45
3.4.1 模块结构和布局46
3.4.2 在主程序中书写测试代码48
3.5 内存管理49
3.5.1 变量定义49
3.5.2 动态类型49
3.5.3 内存分配49
3.5.4 引用计数50
3.5.5 垃圾收集51
3.6 第一个Python程序51
3.7 相关模块和开发工具54
3.8 练习55
第4章 Python对象56
4.1 Python 对象57
4.2 标准类型57
4.3 其他内建类型58
4.3.1 类型对象和type类型对象58
4.3.2 None——Python的Null对象58
4.4 内部类型59
4.4.1 代码对象59
4.4.2 帧对象60
4.4.3 跟踪记录对象60
4.4.4 切片对象60
4.4.5 省略对象60
4.4.6 XRange 对象60
4.5 标准类型操作符61
4.5.1 对象值的比较61
4.5.2 对象身份比较61
4.5.3 布尔类型64
4.6 标准类型内建函数64
4.6.1 type()64
4.6.2 cmp()65
4.6.3 str()和repr()(及``操作符)66
4.6.4 type()和isinstance()67
4.6.5 Python类型操作符和内建函数总结70
4.7 类型工厂函数70
4.8 标准类型的分类71
4.8.1 存储模型71
4.8.2 更新模型72
4.8.3 访问模型73
4.9 不支持的类型74
4.10 练习75
第5章 数字76
5.1 数字简介77
5.1.1 如何创建数值对象并用其赋值(数字对象)77
5.1.2 如何更新数字对象77
5.1.3 如何删除数字对象77
5.2 整型77
5.2.1 布尔型78
5.2.2 标准整型78
5.2.3 长整型78
5.2.4 整型和长整型的统一79
5.3 双精度浮点型79
5.4 复数80
5.5 操作符81
5.5.1 混合模式操作符81
5.5.2 标准类型操作符82
5.5.3 算术操作符82
5.5.4 *位操作符(只适用于整型)86
5.6 内建函数与工厂函数87
5.6.1 标准类型函数87
5.6.2 数字类型函数87
5.6.3 仅用于整型的函数92
5.7 其他数字类型93
5.7.1 布尔“数”93
5.7.2 十进制浮点型94
5.8 相关模块95
5.9 练习97
第6章 序列:字符串、列表和元组100
6.1 序列101
6.1.1 标准类型操作符101
6.1.2 序列类型操作符101
6.1.3 内建函数(BIF)106
6.2 字符串107
6.3 字符串和操作符109
6.3.1 标准类型操作符109
6.3.2 序列操作符切片([ ]和[ : ])109
6.4 只适用于字符串的操作符114
6.4.1 格式化操作符(%)114
6.4.2 字符串模板: 更简单的替代品117
6.4.3 原始字符串操作符(r/R)118
6.4.4 Unicode字符串操作符(u/U)119
6.5 内建函数119
6.5.1 标准类型函数119
6.5.2 序列类型函数119
6.5.3 字符串类型函数120
6.6 字符串内建函数121
6.7 字符串的独特特性124
6.7.1 特殊字符串和控制字符124
6.7.2 三引号125
6.7.3 字符串不变性126
6.8 Unicode127
6.8.1 术语127
6.8.2 什么是Unicode128
6.8.3 怎样使用Unicode128
6.8.4 Codec是什么129
6.8.5 编码解码129
6.8.6 把Unicode应用到实际应用中130
6.8.7 从现实中得来的教训131
6.8.8 Python的Unicode支持131
6.9 相关模块133
6.10 字符串关键点总结134
6.11 列表134
6.12 操作符136
6.12.1 标准类型操作符136
6.12.2 序列类型操作符136
6.12.3 列表类型操作符和列表解析139
6.13 内建函数139
6.13.1 标准类型函数139
6.13.2 序列类型函数140
6.13.3 列表类型内建函数142
6.14 列表类型的内建函数142
6.15 列表的特殊特性145
6.16 元组151
6.17 元组操作符和内建函数152
6.17.1 标准类型操作符、序列类型操作符和内建函数152
6.17.2 元组类型操作符和内建函数、内建方法153
6.18 元组的特殊特性153
6.18.1 不可变性给元组带来了什么影响153
6.18.2 元组也不是那么“不可变”153
6.18.3 默认集合类型154
6.18.4 单元素元组155
6.18.5 字典的关键字155
6.19 相关模块156
6.20 *拷贝Python对象、浅拷贝和深拷贝156
6.21 序列类型小结158
6.22 练习160
第7章 映像和集合类型163
7.1 映射类型:字典164
7.1.1 如何创建字典和给字典赋值164
7.1.2 如何访问字典中的值165
7.1.3 如何更新字典166
7.1.4 如何删除字典元素和字典167
7.2 映射类型操作符167
7.2.1 标准类型操作符167
7.2.2 映射类型操作符168
7.3 映射类型的内建函数和工厂函数168
7.3.1 标准类型函数[type()、str()和cmp()]168
7.3.2 映射类型相关的函数170
7.4 映射类型内建方法172
7.5 字典的键174
7.5.1 不允许一个键对应多个值174
7.5.2 键必须是可哈希的175
7.6 集合类型178
7.6.1 如何创建集合类型和给集合赋值179
7.6.2 如何访问集合中的值179
7.6.3 如何更新集合179
7.6.4 如何删除集合中的成员和集合180
7.7 集合类型操作符180
7.7.1 标准类型操作符(所有的集合类型)180
7.7.2 集合类型操作符(所有的集合类型)181
7.7.3 集合类型操作符(仅适用于可变集合)182
7.8 内建函数183
7.8.1 标准类型函数183
7.8.2 集合类型工厂函数183
7.9 集合类型内建方法184
7.9.1 方法(所有的集合方法)184
7.9.2 方法(仅适用于可变集合)184
7.9.3 操作符和内建方法比较185
7.10 集合类型总结表185
7.11 相关模块186
7.12 练习186
第8章 条件和循环189
8.1 if语句190
8.1.1 多重条件表达式190
8.1.2 单一语句的代码块190
8.2 else语句190
8.3 elif(即else-if)语句191
8.4 条件表达式(即“三元操作符”)192
8.5 while语句193
8.5.1 一般语法193
8.5.2 计数循环193
8.5.3 无限循环194
8.6 for语句194
8.6.1 一般语法194
8.6.2 用于序列类型195
8.6.3 用于迭代器类型196
8.6.4 range()内建函数196
8.6.5 xrange() 内建函数198
8.6.6 与序列相关的内建函数198
8.7 break语句199
8.8 continue语句199
8.9 pass语句200
8.10 再谈else语句200
8.11 迭代器和iter()函数202
8.11.1 什么是迭代器202
8.11.2 为什么要迭代器202
8.11.3 如何迭代202
8.11.4 使用迭代器203
8.11.5 可变对象和迭代器204
8.11.6 如何创建迭代器204
8.12 列表解析205
8.13 生成器表达式206
8.14 相关模块209
8.15 练习209
第9章 文件和输入输出212
9.1 文件对象213
9.2 文件内建函数(open()和file())213
9.2.1 工厂函数file()214
9.2.2 通用换行符支持(UNS)214
9.3 文件内建方法215
9.3.1 输入215
9.3.2 输出215
9.3.3 文件内移动216
9.3.4 文件迭代216
9.3.5 其他216
9.3.6 文件方法杂项217
9.4 文件内建属性219
9.5 标准文件220
9.6 命令行参数220
9.7 文件系统221
9.8 文件执行227
9.9 永久存储模块227
9.9.1 pickle和marshal模块227
9.9.2 DBM风格的模块228
9.9.3 shelve模块228
9.10 相关模块229
9.11 练习230
第10章 错误和异常234
10.1 什么是异常235
10.1.1 错误235
10.1.2 异常235
10.2 Python 中的异常236
10.3 检测和处理异常237
10.3.1 try-except语句238
10.3.2 包装内建函数238
10.3.3 带有多个except的try语句240
10.3.4 处理多个异常的except语句241
10.3.5 捕获所有异常242
10.3.6 “异常参数”244
10.3.7 在应用使用我们封装的函数245
10.3.8 else子句247
10.3.9 finally子句248
10.3.10 try-finally语句248
10.3.11 try-except-else-finally:厨房一锅端250
10.4 上下文管理251
10.4.1 with语句251
10.4.2 *上下文管理协议252
10.5 *字符串作为异常252
10.6 触发异常253
10.7 断言254
10.8 标准异常255
10.9 *创建异常257
10.10 (现在)为什么用异常262
10.11 到底为什么要异常263
10.12 异常和sys模块263
10.13 相关模块264
10.14 练习264
第11章 函数和函数式编程266
11.1 什么是函数?267
11.1.1 函数vs过程267
11.1.2 返回值与函数类型267
11.2 调用函数268
11.2.1 函数操作符268
11.2.2 关键字参数269
11.2.3 默认参数269
11.2.4 参数组269
11.3 创建函数272
11.3.1 def语句272
11.3.2 声明与定义比较272
11.3.3 前向引用272
11.3.4 函数属性273
11.3.5 内部/内嵌函数274
11.3.6 *函数(与方法)装饰器275
11.4 传递函数278
11.5 Formal Arguments279
11.5.1 位置参数279
11.5.2 默认参数279
11.6 可变长度的参数282
11.6.1 非关键字可变长参数(元组)282
11.6.2 关键字变量参数(字典)283
11.6.3 调用带有可变长参数对象函数284
11.7 函数式编程286
11.7.1 匿名函数与lambda286
11.7.2 内建函数apply()、filter()、map()、
reduce()288
11.7.3 偏函数应用293
11.8 变量作用域295
11.8.1 全局变量与局部变量295
11.8.2 globa语句296
11.8.3 作用域的数字297
11.8.4 闭包298
11.8.5 作用域和lambda302
11.8.6 变量作用域和名称空间304
11.9 *递归304
11.10 生成器305
11.10.1 简单的生成器特性305
11.10.2 加强的生成器特性307
11.11 练习308
第12章 模块310
12.1 什么是模块311
12.2 模块和文件311
12.2.1 模块名称空间311
12.2.2 搜索路径和路径搜索311
12.3 名称空间312
12.3.1 名称空间与变量作用域比较313
12.3.2 名称查找、确定作用域、覆盖314
12.3.3 无限制的名称空间314
12.4 导入模块315
12.4.1 import语句315
12.4.2 from-import语句315
12.4.3 多行导入316
12.4.4 扩展的import语句(as)316
12.5 模块导入的特性316
12.5.1 载入时执行模块316
12.5.2 导入(import)和加载(load)317
12.5.3 导入到当前名称空间的名称317
12.5.4 被导入到导入者作用域的名字317
12.5.5 关于__future__318
12.5.6 警告框架318
12.5.7 从ZIP文件中导入模块319
12.5.8 “新的”导入钩子319
12.6 模块内建函数319
12.6.1 __import__()319
12.6.2 globals()和locals()320
12.6.3 reload()320
12.7 包321
12.7.1 目录结构321
12.7.2 使用from-import导入包322
12.8 模块的其他特性323
12.8.1 自动载入的模块323
12.8.2 阻止属性导入323
12.8.3 不区分大小的导入323
12.8.4 源代码编码324
12.8.5 导入循环324
12.8.6 模块执行325
12.9 相关模块325
12.10 练习326
第13章 面向对象编程327
13.1 引言328
13.2 面向对象编程333
13.2.1 面向对象设计与面向对象编程的关系333
13.2.2 现实中的问题334
13.2.3 *常用术语334
13.3 类335
13.3.1 创建类336
13.3.2 声明与定义336
13.4 类属性336
13.4.1 类的数据属性337
13.4.2 Methods337
13.4.3 决定类的属性338
13.4.4 特殊的类属性339
13.5 实例340
13.5.1 初始化:通过调用类对象来创建实例340
13.5.2 __init__()“构造器”方法341
13.5.3 __new__()“构造器”方法342
13.5.4 __del__()“解构器”方法342
13.6 实例属性344
13.6.1 “实例化”实例属性(或创建一个更好的构造器)344
13.6.2 查看实例属性346
13.6.3 特殊的实例属性346
13.6.4 建类型属性347
13.6.5 实例属性vs类属性348
13.7 绑定和方法调用350
13.7.1 调用绑定方法351
13.7.2 调用非绑定方法351
13.8 静态方法和类方法352
13.8.1 staticmethod()和classmethod()内建函数352
13.8.2 使用函数修饰符353
13.9 组合353
13.10 子类和派生354
13.11 继承355
13.11.1 __bases__类属性356
13.11.2 通过继承覆盖方法356
13.11.3 从标准类型派生358
13.11.4 多重继承360
13.12 类、实例和其他对象的内建函数363
13.12.1 issubclass()363
13.12.2 isinstance()363
13.12.3 hasattr()、getattr()、setattr()、delattr()364
13.12.4 dir()365
13.12.5 super()365
13.12.6 vars()366
13.13 用特殊方法定制类367
13.13.1 简单定制(RoundFloat2)370
13.13.2 数值定制(Time60)372
13.13.3 迭代器(RandSeq和AnyIter)375
13.13.4 *多类型定制(NumStr)377
13.14 私有化381
13.15 *授权382
13.15.1 包装382
13.15.2 实现授权383
13.16 新式类的高级特性(Python 2.2+)388
13.16.1 新式类的通用特性388
13.16.2 __slots__类属性389
13.16.3 __getattribute__()特殊方法390
13.16.4 描述符390
13.16.5 元类和__metaclass__399
13.17 相关模块和文档403
13.18 练习405
第14章 执行环境410
14.1 可调用对象411
14.1.1 函数411
14.1.2 方法413
14.1.3 类415
14.1.4 类的实例415
14.2 代码对象416
14.3 可执行的对象声明和内建函数416
14.3.1 callable()417
14.3.2 compile()417
14.3.3 eval()418
14.3.4 exec419
14.3.5 input()420
14.3.6 使用Python在运行时生成和执行Python代码420
14.4 执行其他(Python)程序426
14.4.1 导入426
14.4.2 execfile()427
14.4.3 将模块作为脚本执行428
14.5 执行其他(非Python)程序428
14.5.1 os.system()429
14.5.2 os.popen()430
14.5.3 os.fork()、os.exec*()、os.wait*()431
14.5.4 os.spawn*()432
14.5.5 subprocess 模块432
14.5.6 相关函数433
14.6 受限执行433
14.7 结束执行434
14.7.1 sys.exit() and SystemExit434
14.7.2 sys.exitfunc()435
14.7.3 os._exit() 函数435
14.7.4 os.kill() Function435
14.8 各种操作系统接口436
14.9 相关模块436
14.10 练习437
第2部分 高 级 主 题
第15章 正则表达式441
15.1 引言/动机442
15.2 正则表达式使用的特殊符号和字符443
15.2.1 用管道符号(|)匹配多个正则表达式模式444
15.2.2 匹配任意一个单个的字符(.)444
15.2.3 从字符串的开头或结尾或单词边界开始匹配(^/$ /\b /\B )444
15.2.4 创建字符类([ ])445
15.2.5 指定范围(-)和否定(^)445
15.2.6 使用闭包操作符(*,+,?,{})实现多次出现/重复匹配446
15.2.7 特殊字符表示、字符集446
15.2.8 用圆括号(())组建组447
15.3 正则表达式和Python语言447
15.3.1 re模块:核心函数和方法448
15.3.2 使用compile()编译正则表达式449
15.3.3 匹配对象和group()、groups()方法449
15.3.4 用match()匹配字符串449
15.3.5 search()在一个字符串中查找一个模式(搜索与匹配的比较)450
15.3.6 匹配多个字符串(|)451
15.3.7 匹配任意单个字符(.)451
15.3.8 创建字符集合([ ])452
15.3.9 重复、特殊字符和子组452
15.3.10 从字符串的开头或结尾匹配及在单词边界上的匹配454
15.3.11 用findall()找到每个出现的匹配部分455
15.3.12 用sub()(和subn())进行搜索和替换455
15.3.13 用split()分割(分隔模式)455
15.4 正则表达式示例458
15.4.1 匹配一个字符串460
15.4.2 搜索与匹配的比较,“贪婪”匹配461
15.5 练习463
第16章 网络编程465
16.1 引言466
16.1.1 什么是客户端/服务器架构466
16.1.2 客户端/服务器网络编程468
16.2 套接字:通信端点468
16.2.1 什么是套接字468
16.2.2 套接字地址:主机与端口469
16.2.3 面向连接与无连接469
16.3 Python中的网络编程469
16.3.1 socket()模块函数470
16.3.2 套接字对象(内建)方法470
16.3.3 创建一个TCP服务器471
16.3.4 创建TCP客户端473
16.3.5 运行我们的客户端与TCP服务器474
16.3.6 创建一个UDP服务器475
16.3.7 创建一个UDP客户端476
16.3.8 执行UDP服务器和客户端477
16.3.9 Socket模块属性478
16.4 *SocketServer模块479
16.4.1 创建一个SocketServerTCP服务器479
16.4.2 创建SocketServerTCP客户端480
16.4.3 执行TCP服务器和客户端481
16.5 Twisted框架介绍482
16.5.1 创建一个Twisted Reactor TCP服务器482
16.5.2 创建一个Twisted Reactor TCP客户端483
16.5.3 执行TCP服务器和客户端484
16.6 相关模块484
16.7 练习485
第17章 网络客户端编程487
17.1 什么是因特网客户端488
17.2 文件传输488
17.2.1 文件传输网际协议488
17.2.2 文件传输协议(FTP)488
17.2.3 Python和FTP489
17.2.4 ftplib.FTP类方法490
17.2.5 交互式FTP示例490
17.2.6 客户端FTP程序举例491
17.2.7 FTP的其他方面492
17.3 网络新闻493
17.3.1 Usenet与新闻组493
17.3.2 网络新闻传输协议(NNTP)493
17.3.3 Python和NNTP494
17.3.4 nntplib.NNTP类方法494
17.3.5 交互式NNTP举例495
17.3.6 客户端程序NNTP举例496
17.3.7 NNTP的其他方面500
17.4 电子邮件500
17.4.1 电子邮件系统组件和协议500
17.4.2 发送电子邮件501
17.4.3 Python和SMTP501
17.4.4 smtplib.SMTP类方法502
17.4.5 交互式SMTP示例502
17.4.6 SMTP的其他方面503
17.4.7 接收电子邮件503
17.4.8 POP和IMAP504
17.4.9 Python和POP3504
17.4.10 交互式POP3举例505
17.4.11 poplib.POP3类方法506
17.4.12 客户端程序SMTP和POP3举例506
17.5 相关模块508
17.5.1 电子邮件508
17.5.2 其他网络协议508
17.6 练习509
第18章 多线程编程512
18.1 引言/动机513
18.2 线程和进程513
18.2.1 什么是进程513
18.2.2 什么是线程514
18.3 Python、线程和全局解释器锁514
18.3.1 全局解释器锁(GIL)514
18.3.2 退出线程515
18.3.3 在Python中使用线程515
18.3.4 没有线程支持的情况515
18.3.5 Python的threading模块516
18.4 thread模块517
18.5 threading模块520
18.5.1 Thread类521
18.5.2 斐波那契、阶乘和累加和525
18.5.3 threading模块中的其他函数528
18.5.4 生产者-消费者问题和Queue模块528
18.6 相关模块531
18.7 练习531
第19章 图形用户界面编程532
19.1 简介533
19.1.1 什么是Tcl、Tk和Tkinter533
19.1.2 安装和使用Tkinter533
19.1.3 客户端/服务器架构534
19.2 Tkinter与Python编程534
19.2.1 Tkinter模块:把Tk引入你的程序534
19.2.2 GUI程序开发简介534
19.2.3 顶层窗口:Tkinter.Tk()535
19.2.4 Tk组件535
19.3 Tkinter举例536
19.3.1 标签组件536
19.3.2 按钮组件537
19.3.3 标签和按钮组件537
19.3.4 标签、按钮和进度条组件538
19.3.5 偏函数应用举例539
19.3.6 中级Tkinter范例541
19.4 其他GUI简介545
19.4.1 Tk Interface eXtensions (Tix)546
19.4.2 Python MegaWidgets (PMW)547
19.4.3 wxWidgets和wxPython547
19.4.4 GTK+和PyGTK549
19.5 相关模块和其他GUI551
19.6 练习553
第20章 Web编程554
20.1 介绍555
20.1.1 Web应用:客户端/服务器计算555
20.1.2 因特网555
20.2 使用Python进行Web应用:创建一个简单的Web客户端556
20.2.1 统一资源定位符556
20.2.2 urlparse模块557
20.2.3 urllib模块558
20.2.4 urllib2模块561
20.3 高级Web客户端563
20.4 CGI:帮助Web服务器处理客户端数据567
20.4.1 CGI介绍567
20.4.2 CGI应用程序568
20.4.3 cgi模块569
20.5 建立CGI应用程序569
20.5.1 建立Web服务器569
20.5.2 建立表单页569
20.5.3 生成结果页570
20.5.4 生成表单和结果页面571
20.5.5 全面交互的Web站点574
20.6 在CGI中使用Unicode编码577
20.7 高级CGI579
20.7.1 Mulitipart表单提交和文件的上传579
20.7.2 多值字段579
20.7.3 cookie579
20.7.4 使用高级CGI580
20.8 Web(HTTP)服务器587
20.9 相关模块589
20.10 练习590
第21章 数据库编程593
21.1 介绍594
21.1.1 持久存储594
21.1.2 基本的数据库操作和SQL语言594
21.1.3 数据库和Python596
21.2 Python数据库应用程序程序员
接口(DB-API)596
21.2.1 模块属性597
21.2.2 连接对象598
21.2.3 游标对象599
21.2.4 类型对象和构造器600
21.2.5 关系数据库601
21.2.6 数据库和Python:接口程序602
21.2.7 使用数据库接口程序举例602
21.3 对象-关系管理器(ORM)611
21.3.1 考虑对象,而不是SQL611
21.3.2 Python和ORM611
21.3.3 雇员数据库举例611
21.3.4 总结620
21.4 相关模块620
21.5 练习621
第22章 扩展Python623
22.1 引言/动机624
22.1.1 什么是扩展624
22.1.2 为什么要扩展Python624
22.2 创建Python扩展625
22.2.1 创建您的应用程序代码625
22.2.2 用样板来包装你的代码627
22.2.3 编译630
22.2.4 导入和测试632
22.2.5 引用计数633
22.2.6 线程和全局解释器锁(GIL)635
22.3 相关话题636
22.4 练习637
第23章 其他话题638
23.1 Web服务639
23.2 用Win32的COM来操作微软Office641
23.2.1 客户端COM编程641
23.2.2 微软Excel642
23.2.3 微软Word644
23.2.4 微软PowerPoint645
23.2.5 微软Outlook646
23.2.6 中等规模的例子648
23.3 用Jython写Python和Java的程序650
23.3.1 什么是Jython650
23.3.2 Swing GUI开发(Java或者Python!)651
23.4 练习653
Python.cn社区,华蟒用户组推荐序:
Python世界的书不是很多,但每一本都有自己的特色和特点.这本Core
Python中文版也是如此.这是一本讲解Python语言非常全面的书籍,而且不是那种流水账式的全面,真的做到了由浅入深,无论对于新手还是老手都能从书中获得想要的知识.如果是新手,你不必一次就把书里所有的内容全部看完,看完《Python核心编程》以后,我想你就可以开始Python程序的编写了,并感受Python世界的奇妙.作为老鸟,Python核心的章节也许会有你未曾了解过的知识,温故而知新;而“高级篇”又能让你感受到Python的简洁和强大.
对于这本书还有一点我觉得很欣慰,它不但介绍了OO思想,也很好的对函数式编程方法进行了普及,把Python语言的特点进行了很全面的介绍。对于想了解函数式编程的人,起到了很好的入门效果.而且本人也正在尝试将此书作为大中专教材,为学生们打开一扇进入Unix编程世界的大门!让学生们知道编程世界还有Python这颗闪亮的明珠,为他们以后更好的学习编程打下基础。总而言之,对于想全面学习Python的同学,我推荐此书.
——Python.cn社区,华蟒用户组 管理员 清风
无封面