书籍简介
Python学习手册
作者:[美]马克鲁兹
出版社:机械工业出版社
原名:学习python,第四版。
翻译:李俊/刘宏伟
出版年份:2011-4
页码:889
价格为:119.00元。
装订:平装本
系列:奥莱利动物系列(中文翻译)
ISBN:9787111326533
获取方法
转发本文,私信发送:
0711.
目录
前言1
第一部分介绍使用
第一章问答。第19次会议
为什么人们使用Python19
软件质量20
开发效率21
Python是脚本语言吗21
嗯,Python的缺点是什么?23
现在谁在用Python23?
我能用Python 24做什么
系统编程25
用户图形界面25
互联网脚本25
组件集成26
数据库编程26
快速原型制作27
数值计算和科学计算的编程27
游戏、图像、人工智能、XML、机器人等。
如何获得Python支持28
Python有什么技术优势?
面向对象28
免费29
可移植的29
强大的30
可混合31
易于使用31
简单易学32
Python与其他语言相比如何?
第33章概述
本章练习33
解决问题34
Python是工程,不是艺术。
第2章Python如何运行程序36
Python解释器简介36
程序执行37
程序员的视角37
Python的视角39
执行模块的变体41
Python实现的替代42
执行优化工具43
冻结二进制文件44
其他执行选项45
未来的可能性46
第46章概述
本章练习47
解决问题47
第3章如何运行程序48
在交互提示模式下编写代码48
交互式运行代码49。
为什么使用交互提示模式51?
使用交互式提示模式52
系统命令行和文件54
第一个脚本55
使用命令行运行文件56。
使用命令行和文件57
UNIX可执行脚本(#!)58
UNIXenv搜索技巧59
点击文件图标60。
在Windows中单击图标60。
输入提示61
单击图标的其他限制63
模块导入和重载63
模块亮点:属性65
使用导入和重新加载的注意事项68
使用exec运行模块文件69
空闲用户界面70
闲置基金会71
使用IDLE72
高级闲置工具74
其他ides 74
其他启动选项76
嵌入式呼叫76
冻结二进制可执行性77
选择文本编辑器启动77
其他启动选项77
未来的可能性77
我该选哪78?
调试Python代码78
第80章概要
本章练习80
解决问题80
练习81的第一部分
第二部分类型和操作
第4章介绍Python对象类型87。
为什么要用内置88式?
Python的核心数据类型88
90号
字符串92
序列的操作92
不变性94
特定类型方法94
寻求帮助
书写字符串的其他方式97
模式匹配98
列表98
顺序操作98
特定类型的操作99
边界检查100
嵌套100
列表解析101
字典103
映射操作103
重访巢穴104
键的排序:对于循环105
迭代和优化107
不存在的关键字:if测试107
元组109
为什么要用元组109?
文件110
其他文件工具111
其他核心类型111
如何打破代码113的灵活性
用户定义的类114
剩余的内容115
本章摘要115
本章练习116
解决问题116
第五章第117号
Python的数字类型117
数字常数118
内置数学工具和扩展119
Python表达式运算符120
数字125在实际应用中
变量和基本表达式125
数字显示器的格式126
比较:一般和连续127
Str和repr显示格式128
分部:传统分部、地板分部和真正的分部129
整数精度133
复数133
十六进制、八进制和二进制符号134
位操作136
其他内置数学工具137
其他号码类型139
十进制数139
分数类型141
第145集
布尔类型151
数字分机152
第153章总结
本章练习153
解决问题153
第6章动态类型介绍155
缺少类型声明语句155
变量、对象和引用156
类型属于对象,而不是变量15。
7
对象的垃圾收集158
共享引用159
共享引用和在原处修改161
共享引用和相等163
动态类型随处可见164
本章小结165
本章习题165
习题解答165
第7章字符串167
字符串常量169
单双引号字符串是一样的170
用转义序列代表特殊字节171
raw字符串抑制转义173
三重引号编写多行字符串块175
实际应用中的字符串176
基本操作176
索引和分片177
为什么要在意:分片181
字符串转换工具181
修改字符串184
字符串方法185
字符串方法实例:修改字符串187
字符串方法实例:文本解析189
实际应用中的其他常见字符串方法190
最初的字符串模块(在Python3.0中删除)191
字符串格式化表达式192
更高级的字符串格式化表达式194
基于字典的字符串格式化196
字符串格式化调用方法196
基础知识197
添加键、属性和偏移量198
添加具体格式化198
与%格式化表达式比较200
为什么用新的格式化方法203
通常意义下的类型分类206
同样分类的类型共享其操作集合206
可变类型能够在原处修改207
本章小结208
本章习题208
习题解答208
第8章列表与字典210
列表210
实际应用中的列表213
基本列表操作213
列表迭代和解析213
索引、分片和矩阵214
原处修改列表215
字典220
实际应用中的字典222
字典的基本操作222
原处修改字典223
其他字典方法224
语言表225
字典用法注意事项226
为什么要在意字典接口229
创建字典的其他方法230
Python3.0中的字典变化231
本章小结237
本章习题237
习题解答237
第9章元组、文件及其他239
元组239
实际应用中的元组241
为什么有了列表还要元组243
文件243
打开文件244
使用文件245
实际应用中的文件246
其他文件工具252
重访类型分类254
为什么要在意操作符重载255
对象灵活性255
引用VS拷贝256
比较、相等性和真值258
Python3.0的字典比较260
Python中真和假的含义261
Python的类型层次263
Type对象263
Python中的其他类型265
内置类型陷阱265
赋值生成引用,而不是拷贝265
重复能够增加层次深度266
留意循环数据结构266
不可变类型不可以在原处改变267
本章小结267
本章习题268
习题解答268
第二部分练习题269
第三部分语句和语法
第10章Python语句简介275
重访Python程序结构275
Python的语句276
两个if的故事278
Python增加了什么279
Python删除了什么279
为什么使用缩进语法281
几个特殊实例283
简短实例:交互循环285
一个简单的交互式循环285
对用户输入数据做数学运算287
用测试输入数据来处理错误288
用try语句处理错误289
嵌套代码三层290
本章小结290
本章习题291
习题解答291
第11章赋值、表达式和打印292
赋值语句292
赋值语句的形式293
序列赋值294
Python3.0中的扩展序列解包297
多目标赋值语句301
增强赋值语句302
变量命名规则305
Python的废弃协议306
表达式语句308
表达式语句和在原处的修改309
打印操作310
Python3.0的print函数311
Python2.6print语句313
打印流重定向315
版本独立的打印318
为什么要注意print和stdout319
本章小结320
本章习题321
习题解答321
第12章if测试和语法规则322
if语句322
通用格式322
基本例子323
多路分支323
Python语法规则325
代码块分隔符326
语句的分隔符328
一些特殊情况329
真值测试330
if/else三元表达式332
为什么要在意布尔值334
本章小结335
本章习题335
习题解答335
第13章while和for循环336
while循环336
一般格式336
例子337
break、continue、pass和循环else338
一般循环格式338
pass338
continue340
break340
循环else341
为什么要在意“模拟C语言的while循环”342
for循环343
一般格式343
例子344
为什么要在意“文件扫描”349
编写循环的技巧350
循环计数器:while和range351
非完备遍历:range和分片352
修改列表:range353
并行遍历:zip和map354
产生偏移和元素:enumerate357
本章小结358
本章习题358
习题解答359
第14章迭代器和解析,第一部分360
迭代器:初探360
文件迭代器361
手动迭代:iter和next363
其他内置类型迭代器365
列表解析:初探367
列表解析基础知识368
在文件上使用列表解析369
扩展的列表解析语法370
其他迭代环境371
Python3.0中的新的可迭代对象375
range迭代器376
map、zip和filter迭代器377
多个迭代器VS单个迭代器378
字典视图迭代器379
其他迭代器主题381
本章小结381
本章习题381
习题解答382
第15章文档383
Python文档资源383
#注释384
dir函数384
文档字符串:__doc__385
PyDoc:help函数388
PyDoc:HTML报表390
标准手册集393
网络资源394
已出版的书籍394
常见编写代码的陷阱395
本章小结397
本章习题397
习题解答397
第三部分练习题398
第四部分函数
第16章函数基础403
为何使用函数404
编写函数405
def语句406
def语句是实时执行的407
第一个例子:定义和调用408
定义408
调用408
Python中的多态409
第二个例子:寻找序列的交集410
定义410
调用411
重访多态411
本地变量412
本章小结413
本章习题413
习题解答413
第17章作用域415
Python作用域基础415
作用域法则416
变量名解析:LEGB原则418
作用域实例419
内置作用域420
在Python2.6中违反通用性422
global语句422
最小化全局变量423
最小化文件间的修改424
其他访问全局变量的方法426
作用域和嵌套函数427
嵌套作用域的细节427
嵌套作用域举例427
nonlocal语句433
nonlocal基础433
nonlocal应用435
为什么使用nonlocal437
本章小结440
本章习题441
习题解答442
第18章参数444
传递参数444
参数和共享引用445
避免可变参数的修改447
对参数输出进行模拟448
特定的参数匹配模型449
基础知识449
匹配语法450
细节452
关键字参数和默认参数的实例452
任意参数的实例455
Python3.0Keyword-Only参数459
min调用462
满分463
加分点464
结论465
一个更有用的例子:通用set函数465
模拟Python3.0print函数466
使用Keyword-Only参数467
为什么要在意:关键字参数469
本章小结469
本章习题470
习题解答470
第19章函数的高级话题472
函数设计概念472
递归函数474
用递归求和474
编码替代方案475
循环语句VS递归476
处理任意结构477
函数对象:属性和注解478
间接函数调用478
函数内省479
函数属性480
Python3.0中的函数注解481
匿名函数:lambda483
lambda表达式483
为什么使用lambda484
如何(不要)让Python代码变得晦涩难懂486
嵌套lambda和作用域487
为什么要在意:回调488
在序列中映射函数:map489
函数式编程工具:filter和reduce490
本章小结492
本章习题492
习题解答492
第20章迭代和解析,第二部分494
回顾列表解析:函数式编程工具494
列表解析与map495
增加测试和嵌套循环496
列表解析和矩阵498
理解列表解析499
为什么要在意:列表解析和map500
重访迭代器:生成器501
生成器函数:yieldVSreturn502
生成器表达式:迭代器遇到列表解析506
生成器函数VS生成器表达式507
生成器是单迭代器对象508
用迭代工具模拟zip和map510
为什么你会留意:单次迭代514
内置类型和类中的值生成515
Python3.0解析语法概括516
解析集合和字典解析517
针对集合和字典的扩展的解析语法517
对迭代的各种方法进行计时518
对模块计时519
计时脚本519
计时结果520
计时模块替代方案523
其他建议527
函数陷阱528
本地变量是静态检测的528
默认和可变对象529
没有return语句的函数531
嵌套作用域的循环变量532
本章小结532
本章习题532
习题解答533
第四部分练习题533
第五部分模块
第21章模块:宏伟蓝图539
为什么使用模块540
Python程序架构540
如何组织一个程序541
导入和属性541
标准库模块543
import如何工作543
1.搜索544
2.编译(可选)544
3.运行545
模块搜索路径545
配置搜索路径547
搜索路径的变动548
sys.path列表548
模块文件选择549
高级的模块选择概念550
第三方工具:distutils550
本章小结551
本章习题551
习题解答551
第22章模块代码编写基础553
模块的创建553
模块的使用554
import语句554
from语句555
from*语句555
导入只发生一次555
import和from是赋值语句556
文件间变量名的改变557
import和from的对等性557
from语句潜在的陷阱558
模块命名空间560
文件生成命名空间560
属性名的点号运算562
导入和作用域562
命名空间的嵌套563
重载模块564
reload基础565
reload实例566
为什么要在意:模块重载567
本章小结568
本章习题568
习题解答568
第23章模块包570
包导入基础570
包和搜索路径设置571
__init__.py包文件572
包导入实例573
包对应的from语句和import语句574
为什么要使用包导入575
三个系统的传说576
包相对导入578
Python3.0中的变化578
相对导入基础知识579
为什么使用相对导入581
相对导入的作用域583
模块查找规则总结583
相对导入的应用584
为什么要在意:模块包589
本章小结590
本章习题590
习题解答590
第24章高级模块话题592
在模块中隐藏数据592
最小化from*的破坏:_X和__all__593
启用以后的语言特性593
混合用法模式:__name__和__main__594
以__name__进行单元测试595
使用带有__name__的命令行参数596
修改模块搜索路径599
Import语句和from语句的as扩展599
模块是对象:元程序600
用名称字符串导入模块603
过渡性模块重载604
模块设计理念607
模块陷阱607
顶层代码的语句次序的重要性608
from复制变量名,而不是连接609
from*会让变量语义模糊610
reload不会影响from导入610
reload、from以及交互模式测试611
递归形式的from导入无法工作612
本章小结613
本章习题613
习题解答613
第五部分练习题614
第六部分类和OOP
第25章OOP:宏伟蓝图619
为何使用类620
概览OOP621
属性继承搜索621
类和实例623
类方法调用624
编写类树624
OOP是为了代码重用627
本章小结629
本章习题629
习题解答630
第26章类代码编写基础631
类产生多个实例对象631
类对象提供默认行为632
实例对象是具体的元素632
第一个例子632
类通过继承进行定制635
第二个例子635
类是模块内的属性637
类可以截获Python运算符638
第三个例子639
为什么要使用运算符重载641
世界上最简单的Python类641
类与字典的关系644
本章小结646
本章习题646
习题解答646
第27章更多实例649
步骤1:创建实例650
编写构造函数650
在进行中测试651
以两种方式使用代码652
版本差异提示654
步骤2:添加行为方法654
编写方法656
步骤3:运算符重载658
提供打印显示658
步骤4:通过子类定制行为659
编写子类660
扩展方法:不好的方式660
扩展方法:好的方式661
多态的作用663
继承、定制和扩展664
OOP:大思路664
步骤5:定制构造函数665
OOP比我们认为的要简单666
组合类的其他方式667
在Python3.0中捕获内置属性669
步骤6:使用内省工具670
特殊类属性670
一种通用显示工具671
实例与类属性的关系672
工具类的命名考虑673
类的最终形式674
步骤7(最后一步):把对象存储到数据库中676
Pickle和Shelve676
在shelve数据库中存储对象677
交互地探索shelve678
更新shelve中的对象680
未来方向681
本章小结683
本章习题684
习题解答684
第28章类代码编写细节686
class语句686
一般形式686
例子687
方法689
例子690
调用超类构造函数691
其他方法调用的可能性691
继承692
属性树的构造692
继承方法的专有化693
类接口技术694
抽象超类695
Python2.6和Python3.0的抽象超类696
命名空间:完整的内容698
简单变量名:如果赋值就不是全局变量698
属性名称:对象命名空间698
Python命名空间的“禅”:赋值将变量名分类699
命名空间字典701
命名空间链接704
回顾文档字符串706
类与模块的关系707
本章小结708
本章习题708
习题解答708
第29章运算符重载710
基础知识710
构造函数和表达式:__init__和__sub__711
常见的运算符重载方法711
索引和分片:__getitem__和__setitem__713
拦截分片713
Python2.6中的分片和索引715
索引迭代:__getitem__716
迭代器对象:__iter__和__next__717
用户定义的迭代器717
有多个迭代器的对象719
成员关系:__contains__、__iter__和__getitem__721
属性引用:__getattr__和__setattr__723
其他属性管理工具725
模拟实例属性的私有性:第一部分725
__repr__和__str__会返回字符串表达形式726
右侧加法和原处加法:__radd__和__iadd__729
原处加法730
Call表达式:__call__731
函数接口和回调代码732
比较:__lt__、__gt__和其他方法734
Python2.6的__cmp__方法(已经从Python3.0中移除了)734
布尔测试:__bool__和__len__735
Python2.6中的布尔736
对象析构函数:__del__738
本章小结739
本章习题739
习题解答739
第30章类的设计741
Python和OOP741
通过调用标记进行重载(或不要)742
OOP和继承:“是一个”关系743
OOP和组合:“有一个”关系744
重访流处理器746
为什么要在意:类和持续性748
OOP和委托:“包装”对象749
类的伪私有属性751
变量名压缩概览751
为什么使用伪私有属性752
方法是对象:绑定或无绑定754
在Python3.0中,无绑定方法是函数756
绑定方法和其他可调用对象757
为什么要在意:绑定方法和回调函数760
多重继承:“混合”类760
编写混合显示类761
类是对象:通用对象的工厂771
为什么有工厂772
与设计相关的其他话题773
本章小结773
本章习题774
习题解答774
第31章类的高级主题775
扩展内置类型775
通过嵌入扩展类型776
通过子类扩展类型777
新式类779
新式类变化780
类型模式变化781
钻石继承变动785
新式类的扩展789
slots实例789
类特性793
__getattribute__和描述符795
元类795
静态方法和类方法796
为什么使用特殊方法796
Python2.6和Python3.0中的静态方法797
静态方法替代方案799
使用静态和类方法800
使用静态方法统计实例801
用类方法统计实例802
装饰器和元类:第一部分805
函数装饰器基础805
装饰器例子806
类装饰器和元类807
更多详细信息808
类陷阱809
修改类属性的副作用809
修改可变的类属性也可能产生副作用810
多重继承:顺序很重要811
类、方法以及嵌套作用域812
Python中基于委托的类:__getattr__和内置函数814
“过度包装”814
本章小结815
本章习题815
习题解答815
第六部分练习题816
为什么要在意:大师眼中的OOP821
第七部分异常和工具
第32章异常基础825
为什么使用异常826
异常的角色826
异常处理:简明扼要827
默认异常处理器827
捕获异常828
引发异常829
用户定义的异常830
终止行为830
为什么要在意:错误检查832
本章小结833
本章习题833
习题解答834
第33章异常编码细节835
try/except/else语句835
try语句分句836
try/else分句839
例子:默认行为840
例子:捕捉内置异常841
try/finally语句841
例子:利用try/finally编写终止行为842
统一try/except/finally语句843
统一try语句语法845
通过嵌套合并finally和except845
合并try的例子846
raise语句847
利用raise传递异常849
Python3.0异常链:raisefrom849
assert语句850
例子:收集约束条件(但不是错误)850
with/as环境管理器851
基本使用852
环境管理协议853
本章小结855
本章习题855
习题解答856
第34章异常对象857
异常:回到未来858
字符串异常很简单858
基于类的异常858
类异常例子859
为什么使用类异常861
内置Exception类864
内置异常分类865
默认打印和状态866
定制打印显示867
定制数据和行为868
提供异常细节868
提供异常方法869
本章小结870
本章习题870
习题解答870
第35章异常的设计872
嵌套异常处理器872
例子:控制流程嵌套873
例子:语法嵌套化874
异常的习惯用法876
异常不总是错误876
函数信号条件和raise876
关闭文件和服务器连接877
在try外进行调试878
运行进程中的测试879
关于sys.exc_info879
与异常有关的技巧880
应该包装什么881
捕捉太多:避免空except语句881
捕捉过少:使用基于类的分类883
核心语言总结884
Python工具集884
大型项目的开发工具885
本章小结888
第七部分练习题889
第八部分高级话题注1
第36章Unicode和字节字符串893
Python3.0中的字符串修改894
字符串基础知识895
字符编码方法895
Python的字符串类型897
文本和二进制文件899
Python3.0中的字符串应用900
常量和基本属性900
转换901
编码Unicode字符串903
编码ASCII文本903
编码非ASCII文本904
编码和解码非ASCII文本904
其他Unicode编码技术905
转换编码907
在Python2.6中编码Unicode字符串908
源文件字符集编码声明910
使用Python3.0Bytes对象911
方法调用912
序列操作913
创建bytes对象的其他方式913
混合字符串类型914
使用Python3.0(和Python2.6)bytearray对象915
使用文本文件和二进制文件918
文本文件基础919
Python3.0中的文本和二进制模式919
类型和内容错误匹配921
使用Unicode文件922
在Python3.0中读取和写入Unicode922
在Python3.0中处理BOM924
Python2.6中的Unicode文件927
Python3.0中其他字符串工具的变化927
re模式匹配模块927
Struct二进制数据模块928
pickle对象序列化模块931
XML解析工具932
本章小结935
本章习题935
习题解答936
第37章管理属性938
为什么管理属性938
插入在属性访问时运行的代码939
特性940
基础知识940
第一个例子941
计算的属性942
使用装饰器编写特性943
描述符944
基础知识945
第一个示例947
计算的属性949
在描述符中使用状态信息950
特性和描述符是如何相关的952
__getattr__和__getattribute__953
基础知识954
第一个示例956
计算属性958
__getattr__和__getattribute__比较959
管理技术比较960
拦截内置操作属性963
重访基于委托的Manager967
示例:属性验证970
使用特性来验证971
使用描述符验证973
使用__getattr__来验证974
使用__getattribute__验证976
本章小结977
本章习题977
习题解答977
第38章装饰器979
什么是装饰器979
管理调用和实例980
管理函数和类980
使用和定义装饰器981
为什么使用装饰器981
基础知识982
函数装饰器982
类装饰器986
装饰器嵌套988
装饰器参数990
装饰器管理函数和类991
编写函数装饰器991
跟踪调用992
状态信息保持选项993
类错误之一:装饰类方法997
计时调用1002
添加装饰器参数1004
编写类装饰器1007
单体类1007
跟踪对象接口1009
类错误之二:保持多个实例1012
装饰器与管理器函数的关系1013
为什么使用装饰器(重访)1015
直接管理函数和类1016
示例:“私有”和“公有”属性1018
实现私有属性1019
实现细节之一1021
公有声明的泛化1022
实现细节之二1024
开放问题1025
Python不是关于控制1029
示例:验证函数参数1030
目标1030
针对位置参数的一个基本范围测试装饰器1031
针对关键字和默认泛化1033
实现细节1036
开放问题1038
装饰器参数VS函数注解1039
其他应用程序:类型测试1041
本章小结1042
本章习题1042
习题解答1043
第39章元类1046
要么是元类,要么不是元类1046
提高魔力层次1047
“辅助”函数的缺点1049
元类与类装饰器的关系:第一回合1051
元类模型1053
类是类型的实例1053
元类是Type的子类1055
Class语句协议1056
声明元类1057
编写元类1058
基本元类1058
定制构建和初始化1059
其他元类编程技巧1060
实例与继承的关系1063
示例:向类添加方法1064
手动扩展1064
基于元类的扩展1065
元类与类装饰器的关系:第二回合1067
示例:对方法应用装饰器1070
用装饰器手动跟踪1070
用元类和装饰器跟踪1071
把任何装饰器应用于方法1073
元类与类装饰器的关系:第三回合1074
“可选的”语言功能1076
本章小结1078
本章习题1078
习题解答1078
第九部分附录注2
附录A安装和配置1083
附录B各部分练习题的解答1093