《Python核心编程 第2版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美) 丘恩(Chun. W.J.)著;宋吉广译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:9787115178503
  • 页数:654 页
图书介绍:本书是经典的Python指导书,在第一版的基础上,针对Python进行了全面升级。全书分为两个主要部分:第一部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、Python对象、数字类型、序列类型、映射和集合类型、条件和循环、文件和输入/输出、错误和异常、函数和函数式编程、模块、面向对象编程、执行环境等内容;第二部分则提供了各种高级主题来展示可以使用Python来做些什么,包括正则表达式、网络编程、网络客户端编程、多线程编程、图形用户界面编程、Web编程、数据库编程、扩展Python和一些其他材料。

第1章 欢迎来到Python世界 3

1.1什么是Python 4

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下载和安装Python 7

1.5运行Python 8

1.5.1命令行上的交互式解释器 9

1.5.2从命令行启动脚本 10

1.5.3集成开发环境 11

1.5.4其他的集成开发环境和执行环境 14

1.6Python文档 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.11if语句 27

2.12while循环 28

2.13for循环和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.1Python对象 57

4.2标准类型 57

4.3其他内建类型 58

4.3.1类型对象和type类型对象 58

4.3.2None——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.6XRange对象 60

4.5标准类型操作符 61

4.5.1对象值的比较 61

4.5.2对象身份比较 61

4.5.3布尔类型 64

4.6标准类型内建函数 64

4.6.1type() 64

4.6.2cmp() 65

4.6.3str()和repr()(及?操作符) 66

4.6.4type()和isinstance() 67

4.6.5Python类型操作符和内建函数总结 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.4Unicode字符串操作符(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.8Unicode 127

6.8.1术语 127

6.8.2什么是Unicode 128

6.8.3怎样使用Unicode 128

6.8.4Codec是什么 129

6.8.5编码解码 129

6.8.6把Unicode应用到实际应用中 130

6.8.7从现实中得来的教训 131

6.8.8Python的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.1if语句 190

8.1.1多重条件表达式 190

8.1.2单一语句的代码块 190

8.2else语句 190

8.3elif(即else-if)语句 191

8.4条件表达式(即“三元操作符”) 192

8.5while语句 193

8.5.1一般语法 193

8.5.2计数循环 193

8.5.3无限循环 194

8.6for语句 194

8.6.1一般语法 194

8.6.2用于序列类型 195

8.6.3用于迭代器类型 196

8.6.4range()内建函数 196

8.6.5xrange()内建函数 198

8.6.6与序列相关的内建函数 198

8.7break语句 199

8.8continue语句 199

8.9pass语句 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.1pickle和marshal模块 227

9.9.2DBM风格的模块 228

9.9.3shelve模块 228

9.10相关模块 229

9.11练习 230

第10章 错误和异常 234

10.1什么是异常 235

10.1.1错误 235

10.1.2异常 235

10.2Python中的异常 236

10.3检测和处理异常 237

10.3.1try-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.8else子句 247

10.3.9finally子句 248

10.3.10try-finally语句 248

10.3.11try-except-else-finally:厨房一锅端 250

10.4上下文管理 251

10.4.1with语句 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.1def语句 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.5Formal Arguments 279

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匿名函数与lambda 286

11.7.2内建函数apply()、filter()、map()、reduce() 288

11.7.3偏函数应用 293

11.8变量作用域 295

11.8.1全局变量与局部变量 295

11.8.2globa语句 296

11.8.3作用域的数字 297

11.8.4闭包 298

11.8.5作用域和lambda 302

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.1import语句 315

12.4.2from-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.2globals()和locals() 320

12.6.3reload() 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.2Methods 337

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.1staticmethod()和classmethod()内建函数 352

13.8.2使用函数修饰符 353

13.9组合 353

13.10子类和派生 354

13.11继承 355

13.11.1bases类属性 356

13.11.2通过继承覆盖方法 356

13.11.3从标准类型派生 358

13.11.4多重继承 360

13.12类、实例和其他对象的内建函数 363

13.12.1issubclass() 363

13.12.2isinstance() 363

13.12.3hasattr()、getattr()、setattr()、delattr() 364

13.12.4dir() 365

13.12.5super() 365

13.12.6vars() 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.1callable() 417

14.3.2compile() 417

14.3.3eva1() 418

14.3.4exec 419

14.3.5input() 420

14.3.6使用Python在运行时生成和执行Python代码 420

14.4执行其他(Python)程序 426

14.4.1导入 426

14.4.2execfile() 427

14.4.3将模块作为脚本执行 428

14.5执行其他(非Python)程序 428

14.5.1os.system() 429

14.5.2os.popen() 430

14.5.3os.fork()、os.exec*)、os.wait*) 431

14.5.4os.spawn*) 432

14.5.5subprocess模块 432

14.5.6相关函数 433

14.6受限执行 433

14.7结束执行 434

14.7.1sys.exit()and SystemExit 434

14.7.2sys.exitfunc() 435

14.7.3os._exit()函数 435

14.7.4os.kill()Function 435

14.8各种操作系统接口 436

14.9相关模块 436

14.10练习 437

第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.1re模块:核心函数和方法 448

15.3.2使用compile()编译正则表达式 449

15.3.3匹配对象和group()、groups()方法 449

15.3.4用match()匹配字符串 449

15.3.5search()在一个字符串中查找一个模式(搜索与匹配的比较) 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.3Python中的网络编程 469

16.3.1socket()模块函数 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.9Socket模块属性 478

16.4*SocketServer模块 479

16.4.1创建一个SocketServerTCP服务器 479

16.4.2创建SocketServerTCP客户端 480

16.4.3执行TCP服务器和客户端 481

16.5Twisted框架介绍 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.3Python和FTP 489

17.2.4fplib.FTP类方法 490

17.2.5交互式FTP示例 490

17.2.6客户端FTP程序举例 491

17.2.7FTP的其他方面 492

17.3网络新闻 493

17.3.1Usenet与新闻组 493

17.3.2网络新闻传输协议(NNTP) 493

17.3.3Python和NNTP 494

17.3.4nntplib.NNTP类方法 494

17.3.5交互式NNTP举例 495

17.3.6客户端程序NNTP举例 496

17.3.7NNTP的其他方面 500

17.4电子邮件 500

17.4.1电子邮件系统组件和协议 500

17.4.2发送电子邮件 501

17.4.3Python和SMTP 501

17.4.4smtplib.SMTP类方法 502

17.4.5交互式SMTP示例 502

17.4.6SMTP的其他方面 503

17.4.7接收电子邮件 503

17.4.8POP和IMAP 504

17.4.9Python和POP3 504

17.4.10交互式POP3举例 505

17.4.11poplib.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.3Python、线程和全局解释器锁 514

18.3.1全局解释器锁(GIL) 514

18.3.2退出线程 515

18.3.3在Python中使用线程 515

18.3.4没有线程支持的情况 515

18.3.5Python的threading模块 516

18.4thread模块 517

18.5threading模块 520

18.5.1Thread类 521

18.5.2斐波那契、阶乘和累加和 525

18.5.3threading模块中的其他函数 528

18.5.4生产者-消费者问题和Queue模块 528

18.6相关模块 531

18.7练习 531

第19章 图形用户界面编程 532

19.1简介 533

19.1.1什么是Tcl、Tk和Tkinter 533

19.1.2安装和使用Tkinter 533

19.1.3客户端/服务器架构 534

19.2Tkinter与Python编程 534

19.2.1Tkinter模块:把Tk引入你的程序 534

19.2.2GUI程序开发简介 534

19.2.3顶层窗口:Tkinter.Tk() 535

19.2.4Tk组件 535

19.3Tkinter举例 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.1Tk Interface eXtensions(Tix) 546

19.4.2Python MegaWidgets(PMW) 547

19.4.3wxWidgets和wxPython 547

19.4.4GTK+和PyGTK 549

19.5相关模块和其他GU1 551

19.6练习 553

第20章 Web编程 554

20.1介绍 555

20.1.1Web应用:客户端/服务器计算 555

20.1.2因特网 555

20.2使用Python进行Web应用:创建一个简单的Web客户端 556

20.2.1统一资源定位符 556

20.2.2urlparse模块 557

20.2.3urllib模块 558

20.2.4urllib2模块 561

20.3高级Web客户端 563

20.4CGI:帮助Web服务器处理客户端数据 567

20.4.1CGI介绍 567

20.4.2CGI应用程序 568

20.4.3cgi模块 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高级CGI 579

20.7.1Mulitipart表单提交和文件的上传 579

20.7.2多值字段 579

20.7.3cookie 579

20.7.4使用高级CGI 580

20.8Web(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数据库和Python 596

21.2Python数据库应用程序程序员接口(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考虑对象,而不是SQL 611

21.3.2Python和ORM 611

21.3.3雇员数据库举例 611

21.3.4总结 620

21.4相关模块 620

21.5练习 621

第22章 扩展Python 623

22.1引言/动机 624

22.1.1什么是扩展 624

22.1.2为什么要扩展Python 624

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.1Web服务 639

23.2用Win32的COM来操作微软Office 641

23.2.1客户端COM编程 641

23.2.2微软Excel 642

23.2.3微软Word 644

23.2.4微软PowerPoint 645

23.2.5微软Outlook 646

23.2.6中等规模的例子 648

23.3用Jython写Python和Java的程序 650

23.3.1什么是Python 650

23.3.2Swing GUI开发(Java或者Python!) 651

23.4练习 653