1.1 Python语言的简介
1.1.1 Python语言的起源
Python的创始人为Guido van Rossum(荷兰人,见图)。1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位,由于当时编程语言比较复杂,因此Guido希望能够研发出一种轻松编程的语言。ABC语言(由荷兰的数学和计算机研究所开发)让Guido看到了希望,于是Guido应聘到该研究所工作,并参与到ABC语言的开发。但由于当时的开发是单向的,因此最后只得到商业上失败的结果。
随着互联网的普及,Guido再一次看到了希望。1989年的圣诞节,这位宅男为了打发时间,决定在ABC的基础上开发一个新型的基于互联网社区的脚本解释程序,这样Python就在键盘敲击声中诞生了。Python的诞生让Guido兴奋不止,但问题来了,这门新语言该用哪个名字来命名?某一天,Guido在欣赏他最喜爱的喜剧团体Monty Python演出时,突然灵光一闪,这门新语言有了自己的命名——Python(大蟒蛇的意思)。
1.1.2 Python语言的发展
Python从诞生一直更新到现在,经历了多个版本。截止到目前,官网仍然保留的版本主要是基于Python2.x和Python3.x系列,具体如表所示。
Python2.7是Python 2.x系列的最后一个版本,已经停止开发,计划在2020年终止支持。Guido决定清理Python2.x系列,并将所有最新标准库的更新改进体现在Python 3.x系列中。Python3.x系列的一个最大改变就是使用UTF-8作为默认编码,从此,Python3.x系列中就可以直接编写中文程序了。
另外,Python3.x系列比Python2.x系列更规范统一,其中去掉了某些不必要的关键字与语句。由于Python3.x系列支持的库越来越多,开源项目支持Python3.x的比例已大大提高。鉴于以上理由,本书推荐读者直接学习Python3.x系列。
1.1.3 Python语言的特征
- 简单
Python是一种代表简单主义思想的语言,阅读一段Python程序就像在阅读一篇文章,这使开发者能够专注于解决问题而不是去搞明白语言本身。 - 易学
Python有极其简单的语法,如果开发同样的功能,使用其他语言可能需要上百行代码,而Python只需几十行代码就可以轻松搞定。 - 免费、开源
Python是FLOSS(自由/开放源码软件)之一,使用者可以自由地发布这个软件的拷贝、阅读它的源代码并对它进行修改,这也是Python如此优秀的原因之一。 - 可移植性
由于其开源本质,Python已经被移植在许多平台上,例如Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE等。 - 解释性
C/C++语言在执行时需要经过编译,生成机器码后才能执行。Python是直接由解释器执行。由于不再需要担心如何编译程序、如何确保连接转载正确的库等,所有这一切使得Python的使用更加简单。 - 面向对象
Python从设计之初就已经是一门面向对象的语言。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。 - 可扩展性
假如用户需要一段关键代码运行得更快或者希望某些算法不公开,可以把部分程序用C或C++语言编写,然后在Python程序中使用它们。 - 可嵌入性
用户可以把Python嵌入到C/C++程序,从而向程序提供脚本功能。 - 丰富的库
Python提供丰富的标准库,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI、Tk以及其他与系统相关的库。
1.1.4 Python语言的应用领域
- Web开发
Python语言支持Web网站开发,比较流行的开发框架有Flask、Django等。许多大型网站就是用Python开发的,例如YouTube、Google、金山在线、豆瓣等。 - 网络爬虫
Python语言提供了大量网络模块用于对网页内容进行读取和处理,如urllib、cookielib、httplib、scrapy等。同时,这些模块结合多线程编程以及其他有关模块可以快速开发网页爬虫之类的应用程序。 - 科学计算与数据可视化
Python语言提供了大量模块用于科学计算与数据可视化,如NumPy、SciPy、SymPy、Matplotlib、Traits、TraitsUI、Chaco、TVTK、Mayavi、VPython、OpenCV等,这些模块涉及的应用领域包括数值计算、符号计算、二维图表、三维数据可视化、三维动画演示、图像处理以及界面设计等。
此外,Python语言在系统编程、GUI编程、数据库应用、游戏、图像处理、人工智能等领域被广泛应用。