
在应用广泛的各种语言中,python或许是最容易学习和最好使用的。python代码很容易阅读和编写,并且非常清晰,而没有什么隐秘的。python是一种表达能力非常强的语言,这意味着,在设计同样的应用程序时,使用python进行编码所需要的代码量要远少于使用其他语言(比如c++或java)的代码量。
python是一种跨平台的语言:一般来说,同样的python程序可以同时在windows平台与unix类平台(比如linux、bsd与mac os x)上运行——只需要将构成python程序的单个或多个文件复制到目标机器上,而不需要“构建”或编译(python是解释型语言)。当然,python程序使用特定平台功能也是可能的,但通常很少需要这样做,因为几乎所有python标准库与大多数第三方库都是完全跨平台的,或至少对用户是透明的。
虽然本质上是一种面向对象语言,但是实际上python可以用于进行过程型程序设计、面向对象设计,以及某种程度上的函数型程序设计。本书主要展示如何使用python进行过程型程序设计与面向对象程序设计,也介绍了python的函数型程序设计功能。
本书的目标是展示如何使用良好的python 3惯用风格编写python程序,在阅读本书之后,你就可以发现,本书是一本非常有用的python 3语言索引。虽然与python 2相比,python 3所做的改进和改变是渐进的,而非革新,但是在python 3中,python 2中的一些既有做法变得不再合适或不再必要,因此必须介绍和使用python 3中的一些新做法,以便充分利用python 3的功能。毋庸置疑,python 3优于python 2;它构建于python 2多年的实践基础上,并添加了大量的新功能(还摒弃了python 2的一些不良特性)。与python 2相比,使用python 3更富于乐趣,更便利、容易和具有一致性。
本书旨在讲解python语言本身,虽然中间也涉及很多标准python库,但是没有全部介绍。不过这不是问题,因为在阅读本书之后,将具备充分的python知识,读者可以自如地使用任意的标准库或任意第三方库,并可以创建自己的库模块。
本书适用于多种不同类型的读者,包括自学者、程序设计爱好者、学生、科学家、工程师,以及工作中需要进行程序设计的人,当然,也包括计算专业工作者和计算机科学家。要面对这些不同类型的读者,既让已具备丰富知识的读者不厌烦,又让经验不足的读者可以理解,因此,本书假定读者至少具备一定的程序设计经验(任何程序语言)。特别是,本书需要读者了解数据类型(比如数与字符串)、集合数据类型(比如集合与列表)、控制结构(比如if与while语句)以及函数。此外,有些实例与练习需要读者具备html markup的相关知识,后面某些更专业化的章节需要读者具备一定领域的知识,比如,数据库那一章需要读者具备基本的sql知识。
在结构上,本书尽可能让读者阅读时最富有效率。在第1章结束时,读者应该就可以编写短小但有用的python程序。后续的每一章都分别讲述一个新主题,在内容上通常都会比前一章更广、更深。这意味着,如果顺序阅读本书各章,在每一章结束后,都可以停止阅读,并利用该章讲解的知识编写完整的python程序,当然,你也可以继续阅读以便学习更高级、更复杂的技术。出于这一考虑,有些主题在某一章中介绍,在后续的一章或几章中又进行了深入讲解。
讲解一门新的程序设计语言时,有两个关键的问题。第一个问题是:有时候,需要讲解某个特定概念时,会发现该概念依赖于另外一个概念,而这个概念反过来又直接或间接地依赖于这个“特定概念”。第二个问题是:在最开始的时候,由于读者对该语言毫无所知,或者只具备极为有限的知识,因此要给出有趣的、有用的实例或练习非常困难。在本书中,我们力图解决这两个问题。对第一个问题,首先要求读者具备一定的程序设计经验,了解基本的概念;对第二个问题,我们在第1章中就讲解了python的“beautiful heart”——python的8个关键要素,足以用于编写良好的程序。这种做法也有一个不足的地方:在前几章中,有些实例在风格上会有一点刻意为之的痕迹,这是因为这些实例中只是使用了到该章为止所讲解的知识,不过这种副作用越到后面的章节越弱,到第7章结束时,所有实例都使用完全自然的python 3惯用风格编写。
[第1章 过程型程序设计快速入门
<a href="https://yq.aliyun.com/articles/94883/">1.2 python的关键要素</a>
1.2.1 要素#1:数据类型
1.2.2 要素#2:对象引用
1.2.3 要素#3:组合数据类型
1.2.4 元素#4:逻辑操作符
1.2.4.1 身份操作符
1.2.4.2 比较操作符
1.2.4.3 成员操作符
1.2.4.4 逻辑运算符
1.2.5 要素#5:控制流语句
1.2.5.1 if语句
1.2.5.2 while语句
1.2.5.3 for…in语句
1.2.5.4 基本的异常处理
1.2.6 要素#6:算术操作符
1.2.7 要素#7:输入/输出
1.2.8 要素#8:函数的创建与调用
<a href="https://yq.aliyun.com/articles/94893/">1.3 实例</a>
1.3.1 bigdigits.py
1.3.2 generate_grid.py
<a href="https://yq.aliyun.com/articles/94896/">1.4 总结</a>
<a href="https://yq.aliyun.com/articles/94899/">1.5 练习</a>
第2章 数据类型
<a href="https://yq.aliyun.com/articles/94904/">2.2 integral类型</a>
2.2.1 整数
2.2.2 布尔型
<a href="https://yq.aliyun.com/articles/94905/">2.3 浮点类型</a>
2.3.1 浮点数
2.3.2 复数
2.3.3 十进制数字
<a href="https://yq.aliyun.com/articles/94972/">2.4 字符串</a>
2.4.1 比较字符串
2.4.2 字符串分片与步距
2.4.3 字符串操作符与方法
2.4.4 使用str.format()方法进行字符串格式化
2.4.4.1 字段名
2.4.4.2 转换
2.4.4.3 格式规约
2.4.4.4 实例:print_unicode.py
2.4.5 字符编码
<a href="https://yq.aliyun.com/articles/94988/">2.5 实例</a>
2.5.1 quadratic.py
2.5.2 csv2html.py
<a href="https://yq.aliyun.com/articles/94997/">2.6 总结</a>
<a href="https://yq.aliyun.com/articles/95003/">2.7 练习</a>
第3章 组合数据类型
第4章 控制结构与函数
第5章 模块
第6章 面向对象程序设计
[第7章 文件处理
7.1.1 带可选压缩的pickle
7.1.2 带可选压缩的原始二进制数据
<a href="https://yq.aliyun.com/articles/95041/">7.2 文本文件的写入与分析</a>
7.2.1 写入文本
7.2.2 分析文本
7.2.3 使用正则表达式分析文本
<a href="https://yq.aliyun.com/articles/95054/">7.3 写入与分析xml文件</a>
7.3.1 元素树
7.3.2 dom
7.3.3 手动写入xml
7.3.4 使用sax分析xml
<a href="https://yq.aliyun.com/articles/95073/">7.4 随机存取二进制文件</a>
7.4.1 通用的binaryrecordfile类
7.4.2 实例:bikestock模块的类
<a href="https://yq.aliyun.com/articles/95079/">7.5 总结</a>
<a href="https://yq.aliyun.com/articles/95085/">7.6 练习</a>
第8章 高级程序设计技术
第9章 调试、测试与profiling
第10章 进程与线程
第11章 网络
第12章 数据库程序设计
第13章 正则表达式
第14章 分析简介
第15章 gui程序设计介绍