购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Python的历史与发展

这个世界上存在着几百种计算机编程语言,实际上流行起来的也就十几种。1989年的圣诞节,Guido van Rossum感觉很无聊,就发明了Python编程语言。时隔30多年,这名荷兰人也未必预料到,Python会成为稳居前三位的编程语言。

1.1.1 Python简介

Python是一种跨平台、开源、免费、解释型的高级编程语言。Python编程语言的设计哲学是优雅、明确、简单。用通俗的语言解释这种设计哲学就是:用较少的代码,更快、更有效率地解决问题。Python始终坚持这一理念,这让很多程序开发人员获益匪浅,以至于网络上流传着“人生苦短、我用Python”的说法。

为什么Python可以用较少的代码,更快、更有效率地解决问题呢?这因为Python是一种扩充性强大的语言。Python语言具有丰富和强大的“武器库”,能够把其他语言制作的模块联结在一起,并且具有整合内化成Python语言的能力。例如,用于数学运算的NumPy模块、用于符号运算的SymPy模块、用于绘图的Matplotlib模块、用于HTML解析的Beautiful Soup模块、用于绘制向量图的Pygal模块、用于网络请求的Urilib3模块等。这些模块相当于强大的“武器库”,大大扩展了Python的能力边界。

Python是一门高级编程语言。相对于汇编语言更接近机器的操作命令,Python更接近人的思维。明确、简单的设计理念,让初学者可以更快地学会Python语言。

Python语言还有一个强大的团队在维护和更新这门语言,不断地推陈出新,对Python进行更新换代。Python自发布以来,主要有3个版本。第1个版本是1994年发布的Python 1.0版本,目前这个版本已经过时。第2个版本是2000年发布的Python 2.0版本,2020年4月20日这个版本更新到Python 2.7.18,这是Python官方发布的最后一个Python 2.0版本,如图1—1所示。

事实上,Python 2.7原计划在2015年就退役,但因为当时Python 2有大量Web用户,Python基金会讨论后决定延期5年,同时将Python 3.4的OpenSSL模块(可以保护互联网用户之间安全通信,防止窃听)下放到Python 2.7,以免过期版本对互联网的潜在危害。

第3个版本是2008年发布的Python 3.0版本,截至2022年6月,Python 3.0稳定版本已经更新到Python 3.10.5,Python 3.0内测版已经更新到Python 3.11.0b3。Python 2.x版本和Python 3.x版本差异比较大,所以Python 2.x版本的代码不能直接在Python 3.x环境下运行。如果要Python 2.x版本的代码能够在Python 3.x版本的环境下运行,则需要修改源代码。针对这一棘手问题,Python官方提供了一个将Python 2.x代码转换为Python 3.x代码的小工具2to3.py。2to3.py文件就保存在Python安装路径下的Tools\Scripts子目录中,具体的用法将在后面的章节中论述。虽然Python 3早在2008年就发布了,但Python的大客户Facebook、Instagram、Dropbox等公司,花费了数年的时间才完成代码的迁移,即便如此,Python官方还是坚持推出全新的Python 3.x版本,坚持优雅、简单、明确的设计理念,舍弃与时代、行业发展不符合的部分。这本书对于Python的论述,主要选用Python 3.x版本,如图1—2所示。

图1—1 Python 2.7.18安装包

图1—2 Python 3.x最新版本安装包

Python语言的特色和独特的设计理念,让Python变得越来越出色,很难不被人发现它的才华出众。从2004年开始,Python的使用率呈指数级增长,逐渐受到编程者的欢迎和青睐。这种趋势从2018年开始,越来越明显,如图1—3所示。

图1—3 编程语言流行趋势图

1.1.2 Python与Java、C语言的对比

从图1—3所示编程语言流行趋势图可以看出,从2018年以来,Python与Java、C语言常常位列编程语言前三位。将Python与Java、C语言做一个对比,见表1—1。

表1—1 Python与Java、C语言的对比

C语言在编译运行时,首先将程序代码一次性地转换成机器指令码,简称为机器码(用于指挥计算机应做的操作和操作数地址的一组二进制数)。运行过程中,机器码会保存,下次运行时,直接运行机器码,因此C语言的运行速度非常快。C语言的内置函数(编程语言预先定义的函数)很少,代码量比较大。C语言常常应用在贴近硬件的开发中,例如单片机的开发、嵌入式开发等领域。C语言的编译运行流程图如图1—4所示。

图1—4 C语言的编译运行流程图

Java语言在编译运行时,首先将程序代码转换成字节码,然后运行程序。字节码是一种包含执行程序并由一序列op代码/数据对组成的二进制文件,是一种中间码。字节是计算机里的数据量单位。字节码由Java虚拟机解释执行,并且在虚拟机中把代码转换成平台能够识别的机器码来运行程序,因此,Java语言的运行速度比较快。Java语言中有一些内置函数,代码量比较大。Java语言的编译运行流程图如图1—5所示。

图1—5 Java语言的编译运行流程图

Python语言的运行方式是边解释边执行,是将Python代码逐行转换为机器码并运行的过程。运行过程中,机器码不会保存,因此,相对于C语言和Java语言,Python的执行速度比较慢。由于Python语言有丰富的模块和内置函数,因此Python语言的代码量较小。另外,Python的代码不能加密。整体来看,Python语言是一门优势和缺点很突出的计算机编程语言。Python语言的编译流程图如图1—6所示。

图1—6 Python语言的编译流程图

由于Python语言的优势和缺点同样突出,因此Python语言有不适合的应用领域。例如贴近硬件的开发,首选C语言;手机App的开发,iOS系统的开发使用Object C或Swift语言,安卓系统(Android)使用Java语言或Kotlin语言,鸿蒙操作系统(HarmonyOS 3.0)使用C/C++语言或JavaScript语言。游戏的开发需要高速渲染,一般使用C/C++语言。

既然Python语言的运行速度比较慢,为什么Python的使用率还这么高?为什么很多开发人员喜欢使用Python语言?这是因为随着计算机硬件技术的发展,CPU的性能越来越优越,固态硬盘的出现,大幅提高了硬盘的读取和写入速度。现在制约Python运行速度的主要因素是网络传输的速度,如同你有一辆性能优异的豪车,却行驶在拥挤的高速路上,优越的性能并不能发挥出来。另外,这些程序开发人员的时间很宝贵,公司的任务很繁重,使用Python可以方便、高效地解决问题,为什么不使用Python呢?余生太短,只用Python!

1.1.3 Python的应用领域

由于Python语言的特点,Python的应用范围非常广泛,主要有以下几个领域。

第1个是数学运算,包括各种数学函数的数值计算,以及线性代数的矩阵运算、高等数学的微积分运算,以及解复杂的微分方程。不仅是数值的计算,更有代数式的运算,不过,代数式的运算在计算机看来是符号运算。

第2个是绘制图像,包括印刷级别的散点图、折线图、饼图、柱状图、频率直方图,以及显示在浏览器上的向量图,例如折线图、圆环图、柱状图、饼图、雷达图等。很多公司的大屏数据可视化,都有Python语言写成的可视化模板。

第3个是办公自动化,包括简单的文件操作、目录操作、压缩文件操作、Excel电子表格的操作、Word文档的操作、PDF文档的操作、PPT演示文稿的操作、数据库的增、删、改、查等。现在图形化操作系统给人们的工作和学习带来了很大方便,如果处理一个稍微大数据量的事情,就意识到了办公自动化带来的好处。例如给计算机中的文件修改名字,如果修改几十个文件,人们还不会感到麻烦;如果修改1000个文件的名字,甚至修改10000个文件的名字,则这个工作量可是够大的。当遇到这样简单而又需要大量重复性的工作时,办公自动化便显示出它的优势了。如果学会了Python语言,则在处理这样的问题时可以创建一些脚本工具,批量化地处理此类问题。

第4个是创建GUI。GUI是Graphical User Interface的缩写,即图形用户界面。Python语言提供了很多工具包帮助开发。本书会选择两个典型工具包来讲解。

第5个是网络应用。例如使用Python编写网络爬虫,简单高效。使用Python编写好的程序,对网站进行安全测试和维护。

第6个使用Python处理一些大问题。例如创建网站,Python提供了很多Web开发框架:轻量级的Flask框架、重量级的Django框架、异步高并发的Tornado框架。学习这些知识,需要预先学习网站的架构及数据库等必备知识,有一些门槛,否则学起来会感觉云山雾罩,不知所以。还有计算机视觉处理、机器学习、大数据处理,处理这些问题需要学习相应学科的必备知识,这些问题是有门槛的大问题。

注意: Web开发框架是为了帮助开发者更快地开发出动态网站所提供的框架,支持开发者方便、快捷地创建动态网站,创建网络应用程序,以及提供网络服务。做一个简单的类比,创建一个动态网站,就像建造一栋大楼,这是一个很大的工程。如果使用Python语言从头开发,无异于从打地基开始一砖一瓦地进行建造,非常耗费时间和精力。Web开发框架相当于已经帮你建造了大楼的框架,开发者所需要做的是对大楼的毛坯房进行装修。

Python语言同样受到了各大互联网公司的青睐和使用。国外的视频网站YouTube是使用Python语言开发的,国内的搜狐邮箱和豆瓣网是采用Python语言开发的,著名的云计算平台OpenStack是使用Python语言开发的,谷歌的机器学习框架TensorFlow是采用Python语言开发的,使用Python语言可以对这个学习框架进行二次开发。 8fpix3xoDXEcD6BVFtgEnlriiaVQR4GyNZoXXvn++j8W4CWc2EVGpAmdt6K6ZUTh

点击中间区域
呼出菜单
上一章
目录
下一章
×