
1.2 认识Python
1.2.1 探究Python的产生背景
Python编程语言在1989年就诞生了,其创始人为吉多·范罗苏姆(Guido van Rossum)。在Python语言诞生之前,吉多正在参与荷兰的CWI(数学和计算机研究所)的ABC语言的开发,该语言以满足教学为目的,且非常优美和强大,但ABC也存在着一些致命的问题,导致它最终没有流行起来,主要原因如下:
□ 可扩展性差。ABC不是模块化的语言,要在ABC中增加功能就必须改动很多地方,且步骤烦琐。
□ 不能直接进行输入输出。尽管可以通过诸如文本流的方式导入数据,但ABC无法直接读写文件。
□ 过度革新。ABC语言太贴近自然语言,虽然很特别、对新手很易学,但对大多数还掌握其他语言的程序员来说非常不适应,实际增加了学习难度。
□ 传播困难。ABC编译器很大,必须被保存在磁带上,安装时必须有一个大磁带,如图1-4所示,使得传播很困难。
1989年为了打发无聊的圣诞节假期,吉多·范罗苏姆(见图1-5)决定开发一款新的介于C和Shell之间、功能全面、易学易用的脚本解释器,之所以选择Python作为该编程语言的名字,是因为吉多是电视剧Monty Python's Flying Circus的忠实粉丝,他希望这个新的叫作Python的语言,能符合全面调用计算机的功能接口,又能轻松实现编程。

图1-4 保存ABC语言程序的专门磁带

图1-5 吉多·范罗苏姆
1991年第一个Python编译器诞生,它是用C语言实现的,并能够调用C语言的库文件。从诞生开始,Python语言已经具有了类、函数、异常处理等机制,包含表、词典、集合等核心数据类型,以及模块为基础的拓展系统。Python的可拓展性很强,他的可以在多个层次上拓展。从高层上,可以直接引入.py文件;在底层,可以直接引用C语言的库。
最初的Python完全由吉多·范罗苏姆本人开发,很快就受到其同事的欢迎,他们迅速地反馈使用意见,并参与Python的改进。吉多·范罗苏姆和他的一些同事构成Python的核心团队,他们将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考,使得Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节,这一特征吸引了广大的程序员,Python开始流行。
1.2.2 了解Python语言的特点
Python是一种面向对象、解释型、弱类型的脚本语言,它也是一种功能强大而完善的通用型语言。相比其他编程语言(Java、.Net)而言,Python代码非常简单,上手非常容易。例如我们要完成某个功能,如果用Java需要100行代码,但用Python可能只需要20行代码,这是Python具有巨大吸引力的一大特点。Python编程语言的主要特点如下:
□ 开放源代码。Python开放所有的源代码,用户可以自由地下载这个软件的拷贝,阅读它的源代码,对它进行改动。
□ 解释性。Python是一门解释性语言,解释器不需要将源代码直接翻译成二进制中间码的形式,这使得Python程序更加易于移植。
□ 面向对象。Python语言既支持面向过程,也支持面向对象,提供了类、对象、继承、重写、多态等编程机制。
□ 丰富的扩展库。Python提供了丰富的标准库,可以满足各种编程场景,如数据分析与挖掘、人工智能 应用、网络爬虫等。
1.2.3 熟悉Python的应用领域
Python的应用领域非常广泛,目前全球最大的搜索引擎——Google在其网络搜索系统中广泛应用了Python语言,Facebook网站大量的基础库和YouTube视频分享服务的大部分也是用Python语言编写的,其应用领域如下:
□ 数据分析与处理。Python拥有一个比较完善的数据分析与处理的生态系统,其中Matplotlib经常会被用来绘制数据图表,它是一个2D绘图工具,可以完成直方图、散点图、折线图、条形图等的绘制。Pandas是基于Python的一个数据分析工具,该工具是为了解决数据分析任务而创建的,拥有大量类库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
□ Web开发与应用。Python是Web开发的主流语言,拥有一套成熟的Web开发框架。Django是一个开源的Web应用框架,支持许多数据库引擎,可以让Web开发变得迅速和可扩展,Django不断地更新版本以匹配最新的Python应用领域;Flask是一个轻量级的Web应用框架, 较同类型框架更为灵活、轻便、安全且容易上手,它可以很好地结合MVC模式进行开发。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心框架简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
□ 网络爬虫技术。网络爬虫是互联网上进行信息采集的通用手段,在互联网的各个专业方向上都是不可或缺的底层技术支撑。Scrapy是一个用于以一种快速、简单、可扩展的方式从网站中提取所需要数据的开源框架,可以广泛用于数据挖掘、监测和自动化测试。
□ 科学计算。Python提供了丰富的科学计算工具,如Numpy、Pandas、Matplotlib等,可以满足科学计算与研究的需求。
1.2.4 跟踪Python版本发展
Python语言是开源项目的优秀代表,其解释器的全部代码都是开源的,可以在Python的官方网站(http://www.python.org/)自由下载。Python软件基金会(Python Software Foundation,PSF)是一个非营利性组织,拥有Python 2.1版本之后的全部版权,该组织致力于更好推进并包含Python语言的开放性。自1990年Python 1.0版本推出以来,Python经历了几次比较大的版本迭代更新,如图1-6所示。

图1-6 Python版本发展变更
2000年10月,Python 2.0正式发布,标志着Python语言走向成熟,解决了其解释器和运行环境中的诸多问题,开启了Python广泛应用的新时代。
2008年12月,Python 3.0正式发布,这个版本在语法层面和解释器内部做了重大的改进,解释器内部采用了完全面向对象的方式实现。这些重要的修改所付出的代价是3.x系列的版本无法向下兼容Python 2.0的既有语法。因此,所有基于Python 2.0系列版本编写的库函数都必须修改后才能在Python 3.0系列的解释器上运行。
2010年3月,Python 2.x系列发布了最后一版,其主版本号是2.7,用于终结2.x系列版本的发展,并且不再进行重大改进。