内容简介
本书介绍Python 语言的基础知识及其在各个领域的具体应用,基于最新版本3.x。书中首先介绍了Python 语言的一些必备基本知识,然后介绍了在商业、科研以及艺术领域使用Python 开发各种应用的实例。文字简洁明了,案例丰富实用,是一本难得的Python 入门手册。
目录
- 前言xiv
- 第1章Python初探1
- 1.1真实世界中的Python5
- 1.2Python与其他语言5
- 1.3为什么选择Python7
- 1.4何时不应该使用Python8
- 1.5Python 2与Python 38
- 1.6安装Python9
- 1.7运行Python9
- 1.7.1使用交互式解释器9
- 1.7.2使用Python文件10
- 1.7.3下一步11
- 1.8禅定一刻11
- 1.9练习11
- 第2章Python基本元素:数字、字符串和变量13
- 2.1变量、名字和对象13
- 2.2数字16
- 2.2.1整数17
- 2.2.2优先级20
- 2.2.3基数21
- 2.2.4类型转换22
- 2.2.5一个int型有多大23
- 2.2.6浮点数24
- 2.2.7数学函数24
- 2.3字符串24
- 2.3.1使用引号创建25
- 2.3.2使用str()进行类型转换27
- 2.3.3使用\ 转义27
- 2.3.4使用+ 拼接28
- 2.3.5使用* 复制28
- 2.3.6使用[] 提取字符28
- 2.3.7使用[start:end:step]分片29
- 2.3.8使用len()获得长度31
- 2.3.9使用split()分割32
- 2.3.10使用join()合并32
- 2.3.11熟悉字符串32
- 2.3.12大小写与对齐方式33
- 2.3.13使用replace()替换34
- 2.3.14更多关于字符串的内容35
- 2.4练习35
- 第3章Python容器:列表、元组、字典与集合36
- 3.1列表和元组36
- 3.2列表37
- 3.2.1使用[] 或list()创建列表37
- 3.2.2使用list()将其他数据类型转换成列表37
- 3.2.3使用[offset]获取元素38
- 3.2.4包含列表的列表39
- 3.2.5使用[offset]修改元素39
- 3.2.6指定范围并使用切片提取元素40
- 3.2.7使用append()添加元素至尾部40
- 3.2.8使用extend()或+=合并列表40
- 3.2.9使用insert()在指定位置插入元素41
- 3.2.10使用del删除指定位置的元素41
- 3.2.11使用remove()删除具有指定值的元素42
- 3.2.12使用pop()获取并删除指定位置的元素42
- 3.2.13使用index()查询具有特定值的元素位置42
- 3.2.14使用in判断值是否存在42
- 3.2.15使用count()记录特定值出现的次数43
- 3.2.16使用join()转换为字符串43
- 3.2.17使用sort()重新排列元素44
- 3.2.18使用len()获取长度44
- 3.2.19使用= 赋值,使用copy()复制45
- 3.3元组46
- 3.3.1使用()创建元组46
- 3.3.2元组与列表47
- 3.4字典47
- 3.4.1使用{}创建字典48
- 3.4.2使用dict()转换为字典48
- 3.4.3使用[key]添加或修改元素49
- 3.4.4使用update()合并字典50
- 3.4.5使用del删除具有指定键的元素51
- 3.4.6使用clear()删除所有元素51
- 3.4.7使用in 判断是否存在51
- 3.4.8使用[key]获取元素52
- 3.4.9使用keys()获取所有键52
- 3.4.10使用values()获取所有值53
- 3.4.11使用items()获取所有键值对53
- 3.4.12使用= 赋值,使用copy()复制53
- 3.5集合53
- 3.5.1使用set()创建集合54
- 3.5.2使用set()将其他类型转换为集合54
- 3.5.3使用in测试值是否存在55
- 3.5.4合并及运算符56
- 3.6比较几种数据结构58
- 3.7建立大型数据结构59
- 3.8练习60
- 第4章Python外壳:代码结构61
- 4.1使用# 注释61
- 4.2使用\ 连接62
- 4.3使用if、elif 和else进行比较63
- 4.4使用while进行循环66
- 4.4.1使用break跳出循环66
- 4.4.2使用continue跳到循环开始67
- 4.4.3循环外使用else67
- 4.5使用for迭代68
- 4.5.1使用break跳出循环69
- 4.5.2使用continue跳到循环开始69
- 4.5.3循环外使用else69
- 4.5.4使用zip()并行迭代70
- 4.5.5使用range()生成自然数序列71
- 4.5.6其他迭代方式71
- 4.6推导式72
- 4.6.1列表推导式72
- 4.6.2字典推导式74
- 4.6.3集合推导式74
- 4.6.4生成器推导式74
- 4.7函数75
- 4.7.1位置参数79
- 4.7.2关键字参数79
- 4.7.3指定默认参数值79
- 4.7.4使用*收集位置参数80
- 4.7.5使用**收集关键字参数81
- 4.7.6文档字符串82
- 4.7.7一等公民:函数82
- 4.7.8内部函数84
- 4.7.9闭包84
- 4.7.10匿名函数:lambda()函数85
- 4.8生成器86
- 4.9装饰器87
- 4.10命名空间和作用域89
- 4.11使用try和except处理错误91
- 4.12编写自己的异常93
- 4.13练习94
- 第5章Python盒子:模块、包和程序95
- 5.1独立的程序95
- 5.2命令行参数96
- 5.3模块和import语句96
- 5.3.1导入模块96
- 5.3.2使用别名导入模块98
- 5.3.3导入模块的一部分98
- 5.3.4模块搜索路径98
- 5.4包99
- 5.5Python 标准库99
- 5.5.1使用setdefault()和defaultdict()处理缺失的键100
- 5.5.2使用Counter()计数101
- 5.5.3使用有序字典OrderedDict()按键排序103
- 5.5.4双端队列:栈+队列103
- 5.5.5使用itertools迭代代码结构104
- 5.5.6使用pprint()友好输出105
- 5.6获取更多Python代码105
- 5.7练习106
- 第6章对象和类107
- 6.1什么是对象107
- 6.2使用class定义类108
- 6.3继承109
- 6.4覆盖方法111
- 6.5添加新方法112
- 6.6使用super从父类得到帮助112
- 6.7self的自辩113
- 6.8使用属性对特性进行访问和设置114
- 6.9使用名称重整保护私有特性117
- 6.10方法的类型118
- 6.11鸭子类型119
- 6.12特殊方法120
- 6.13组合123
- 6.14何时使用类和对象而不是模块124
- 6.15练习126
- 第7章像高手一样玩转数据127
- 7.1文本字符串127
- 7.1.1Unicode127
- 7.1.2格式化134
- 7.1.3使用正则表达式匹配137
- 7.2二进制数据144
- 7.2.1字节和字节数组144
- 7.2.2使用struct转换二进制数据145
- 7.2.3其他二进制数据工具148
- 7.2.4使用binascii()转换字节/ 字符串149
- 7.2.5位运算符149
- 7.3练习149
- 第8章数据的归宿152
- 8.1文件输入/输出152
- 8.1.1使用write()写文本文件153
- 8.1.2使用read()、readline()或者readlines()读文本文件154
- 8.1.3使用write()写二进制文件156
- 8.1.4使用read()读二进制文件157
- 8.1.5使用with自动关闭文件157
- 8.1.6使用seek()改变位置157
- 8.2结构化的文本文件159
- 8.2.1CSV159
- 8.2.2XML161
- 8.2.3HTML163
- 8.2.4JSON163
- 8.2.5YAML165
- 8.2.6安全提示166
- 8.2.7配置文件167
- 8.2.8其他交换格式168
- 8.2.9使用pickle序列化168
- 8.3结构化二进制文件169
- 8.3.1电子数据表169
- 8.3.2层次数据格式169
- 8.4关系型数据库170
- 8.4.1SQL170
- 8.4.2DB-API172
- 8.4.3SQLite172
- 8.4.4MySQL174
- 8.4.5PostgreSQL174
- 8.4.6SQLAlchemy174
- 8.5NoSQL数据存储179
- 8.5.1dbm family180
- 8.5.2memcached180
- 8.5.3Redis181
- 8.5.4其他的NoSQL189
- 8.6全文数据库189
- 8.7练习190
- 第9章剖析Web191
- 9.1Web 客户端192
- 9.1.1使用telnet进行测试193
- 9.1.2Python的标准Web库194
- 9.1.3抛开标准库:requests195
- 9.2Web 服务端196
- 9.2.1最简单的Python Web服务器196
- 9.2.2Web服务器网关接口198
- 9.2.3框架198
- 9.2.4Bottle198
- 9.2.5Flask201
- 9.2.6非Python的Web服务器204
- 9.2.7其他框架206
- 9.3Web服务和自动化207
- 9.3.1webbrowser模块207
- 9.3.2Web API和表述性状态传递208
- 9.3.3JSON209
- 9.3.4抓取数据209
- 9.3.5用BeautifulSoup来抓取HTML209
- 9.4练习210
- 第10章系统212
- 10.1文件212
- 10.1.1用open()创建文件212
- 10.1.2用exists()检查文件是否存在213
- 10.1.3用isfile()检查是否为文件213
- 10.1.4用copy()复制文件213
- 10.1.5用rename()重命名文件214
- 10.1.6用link()或者symlink()创建链接214
- 10.1.7用chmod()修改权限214
- 10.1.8用chown()修改所有者214
- 10.1.9用abspath()获取路径名215
- 10.1.10用realpath()获取符号的路径名215
- 10.1.11用remove()删除文件215
- 10.2目录215
- 10.2.1使用mkdir()创建目录215
- 10.2.2使用rmdir()删除目录215
- 10.2.3使用listdir()列出目录内容216
- 10.2.4使用chdir()修改当前目录216
- 10.2.5使用glob()列出匹配文件216
- 10.3程序和进程217
- 10.3.1使用subprocess创建进程218
- 10.3.2使用multiprocessing创建进程219
- 10.3.3使用terminate()终止进程219
- 10.4日期和时间220
- 10.4.1datetime模块221
- 10.4.2使用time模块223
- 10.4.3读写日期和时间225
- 10.4.4其他模块227
- 10.5练习228
- 第11章并发和网络229
- 11.1并发230
- 11.1.1队列231
- 11.1.2进程231
- 11.1.3线程232
- 11.1.4绿色线程和gevent234
- 11.1.5twisted236
- 11.1.6asyncio238
- 11.1.7Redis238
- 11.1.8队列之上241
- 11.2网络241
- 11.2.1模式242
- 11.2.2发布-订阅模型242
- 11.2.3TCP/IP245
- 11.2.4套接字246
- 11.2.5ZeroMQ250
- 11.2.6scapy253
- 11.2.7网络服务253
- 11.2.8Web服务和API255
- 11.2.9远程处理256
- 11.2.10大数据和MapReduce260
- 11.2.11在云上工作261
- 11.3练习264
- 第12章成为真正的Python开发者265
- 12.1关于编程265
- 12.2寻找Python代码265
- 12.3安装包266
- 12.3.1使用pip266
- 12.3.2使用包管理工具267
- 12.3.3从源代码安装267
- 12.4集成开发环境268
- 12.4.1IDLE268
- 12.4.2PyCharm268
- 12.4.3IPython269
- 12.5命名和文档269
- 12.6测试代码270
- 12.6.1使用pylint、pyflakes和pep8检查代码270
- 12.6.2使用unittest进行测试272
- 12.6.3使用doctest进行测试276
- 12.6.4使用nose进行测试277
- 12.6.5其他测试框架278
- 12.6.6持续集成278
- 12.7调试Python代码278
- 12.8使用pdb进行调试279
- 12.9记录错误日志284
- 12.10优化代码286
- 12.10.1测量时间286
- 12.10.2算法和数据结构288
- 12.10.3Cython、NumPy和C扩展289
- 12.10.4PyPy289
- 12.11源码控制289
- 12.11.1Mercurial290
- 12.11.2Git290
- 12.12复制本书代码292
- 12.13更多内容293
- 12.13.1书293
- 12.13.2网站293
- 12.13.3社区293
- 12.13.4大会294
- 12.14后续内容294
- 附录APython的艺术295
- 附录B工作中的Python307
- 附录CPython的科学320
- 附录D安装Python 3339
- 附录E习题解答349
- 附录F速查表380
- 作者介绍383
- 封面介绍383
浏览完了电子版。感觉是一本很有诚意的入门书。作者真心想教会你很多东西。前半部分写的非常好。但是从并行那章开始,感觉开始看不懂了,因为本身比较难,写的也不详细(估计因为篇幅)。接下来的网络部分写的有点看不懂。附录罗列的东西好多,作者懂得很多。总之这本书入门的话,看前半部分很好,后面可以浏览一遍。
对于已经入门的读者来说很精练,内容宽泛节奏也很快,但不会觉得浅尝辄止,对很多概念的讲解非常生动形象,加上有不错的练习题,对进一步夯实语言基础非常有帮助,算是一本开眼界、长见识的书。唯一稍显遗憾的地方是讲网络和并发的那一章不怎么成系统,这一章作为基础教程细节略多、主体分散,读了几遍还是不怎么通透。不过这些领域的确需要更加专业和深入的学习了。