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

1.1 Python介绍

1989年的12月,荷兰程序员Guido van Rossum为了打发圣诞节期间的空闲时间,开发出一种新的解释型语言Python。所谓解释型语言指的是程序在运行时需要翻译成机器能识别的语言。Python以另外一种编程语言ABC为基础。ABC语言是当时Guido van Rossum参与的一种教学编程语言。Python的第一版发布于1991年。

在Guido van Rossum看来,ABC语言优美而强大,它是专门针对非专业程序员而设计的,但却由于其封闭性等特点而未获得成功。Guido van Rossum正是在改进ABC的基础上推出了Python。因此,Python的缩进风格和主要数据类型均受ABC语言影响。

吉多·范罗苏姆Jim Hugunin,(1956-), Dutch programmer Author of the Python programming language.

(Source: https://en.wikipedia.org/wiki/Guido_van_Rossum/)

由于Python的中文翻译是蟒蛇,因此很多人可能会认为Python是以蟒蛇命名的。实际上,这个名字来源于当时风靡欧洲的英国六人喜剧团体Monty Python(见图1-1)。Monty Python在当时以革新的电视喜剧模式出现,在一定程度上影响了日后的英国电视剧的发展。Guido van Rossum特别喜欢Monty Python的表演,他希望这种新的编程语言能像Monty Python一样独树一帜,因此决定以这个喜剧团体的名字来命名这种新的编程语言。

图1-1 Python以马戏团Monty Python命名(来源:https://www.theguardian.com/)

Python自推出以来,受到越来越多人的欢迎,如图1-2所示是2001年到2020年这二十年间几种热门编程语言的 TIOBE编程社区指数 (TIOBE programing community index)的变化。TIOBE编程社区指数(以下简称“TIOBE指数”)被用来反映编程语言的流行程度,这个指数排行榜是瑞士的TIOBE公司根据一些常用的搜索引擎(包括Google、Bing和百度等)、网络媒体(YouTube和维基百科)的搜索统计数据,以及有经验的程序员、课程和第三方厂商使用的编程语言的数量而获得。从图1-2中可以看到,Python的TIOBE指数在2017年后一直在攀升。

图1-2 TIBOE指数变化趋势(数据来源:https://www.tiobe.com/tiobe-index/)

如表1-1所示为2020年TIOBE指数排名前十的编程语言与2000年排名情况的对比。读者可以发现,Python从2000年的第22名跃升到2020年的第3名,其热门程度仅次于Java和C语言。Java是面向对象编程,C语言是面向过程编程,而Python既可以实现面向对象编程,也可以实现面向过程编程。

表1-1 2020年和2000年TIOBE指数前十名对比

国内外许多知名软件和网站都是基于Python开发的,比如,Google、知乎和今日头条等。

Python简便易用的特性,使得其用户并不局限于专业的程序员,像金融、医药、科研等领域的从业人员也借助Python大大提高了工作效率。以下例子展示了如何使用Python在文件中写入数据。借助简单的几行代码,读者即可从烦琐的工作中解放出来,因此掌握Python可以大大提高工作效率。

Python的优点不胜枚举,比如可读性好、代码简洁,Python中很多关键字和英语单词非常接近。如图1-3所示为使用Python和Java在屏幕输出显示“Hi there This is Python/Java”代码,读者对比可以发现,在这个例子里,Python的代码不但简洁明了,并且更接近英语的思维习惯。

Python另一个重要优点是免费和开源。所谓 开源 (Free and Open-Source Software, FOSS),指的是所有用户都可以看到Python的源代码,这体现在两个方面:①程序员使用Python编写的代码是开源的;②Python的解释器和第三方库是开源的。

由于Python代码的开源性,使用者可以免费地查阅Python的源代码,并参与改进和提高其功能和稳定性。所有用户都可以使用Python开发自己的软件和程序,而不必担心版权问题。用户甚至可以将用Python编写的软件应用在商业用途上。

人们在免费使用Python时,创建了各种免费库,又极大地强化了Python的功能。如表1-2介绍了Python标准库和常用的第三方库。接下来的章节中将会详细介绍绘图库Matplotlib、矩阵运算库NumPy、数据处理库pandas和科学运算库SciPy。也会涉及诸如scikit-learn、TensorFlow、maxnet和PyTorch等近年来应用于机器学习和人工智能的热门运算库。

图1-3 Python和Java实现同样功能代码对比

表1-2 Python标准库和常见第三方库

Python以其良好的黏合性和可扩展性,被称为胶水语言。它可以与C、C++、Java和MATLAB等其他编程语言混合编程。比如安装rpy2库后,可以在Python环境中调用R语言中的命令和函数,也可以使用Python调用R语言编写的命令。再比如,可以使用Cython扩展库去实现与C语言的混合编程。

MATLAB可以调用Python代码,Python中也可以调用MATLAB。读者可以通过以下网址了解更多细节。

https://www.mathworks.com/help/matlab/matlab-engine-for-python.html

https://www.mathworks.com/help/matlab/matlab-engine-for-python.html

https://www.mathworks.com/help/matlab/call-python-libraries.html

如图1-4所示为Python和其他常见编程语言混合编程时需要使用到的第三方接口库。

图1-4 Python支持与其他编程语言粘合

Python同时支持 面向过程编程 (Procedure Oriented Programming, POP)和 面向对象编程 (Object Oriented Programming, OOP)。面向过程编程是以步骤和过程为中心的编程思想。如图1-5所示为使用面向过程的思想将一只大象放入冰箱中:第一步是打开冰箱门;第二步是把大象放入冰箱中;第三步是关闭冰箱门。而面向对象编程是以对象为中心的编程思想。如图1-6所示为使用面向对象的思想解决同一问题的思路,根据面向对象思想,可分为大象和冰箱两个对象,大象有“被放入冰箱”这个动作;冰箱则有开/关门这个动作。

图1-5 面向过程编程思想

图1-6 面向对象编程思想

目前被广泛使用的Python版本有Python 2.X和Python 3.X,Python 2.0版本是在2000年10月16日推出的,Python 3.0版本于2008年12月3日推出,Python 3.X相对于Python 2.X有较大的变化和改进。Python 3解决和修正了Python之前的旧版本中存在的固有设计缺陷,其开发重点是清理代码库,让程序语言更加清晰明了。如图1-7所示对比了Python 2.X和Python 3.X的主要区别。

图1-7 对比Python 2.X和Python 3.X

Python 3.X的一些重大变动包括把print()函数改成内置函数,改进了整数的除法问题,增加了更多的对字符串Unicode的支持。为了避免在底层设计中的累赘,Python 3.X不能向下兼容Python 2.X。Python 3.X新增了一些对高级功能的支持,如 机器学习 (machine learning)、 人工智能 (artificial intelligence)和 数据科学 (data science)。

Python软件基金会 (Python software foundation)鼓励用户采用Python 3.X,并宣布自2020年1月1日开始停止对Python 2.X的更新。Python软件基金会是一个致力于保护、推广和提升Python程序语言的非营利机构,成立于2001年3月6日,它还支持和促进Python社区的发展。

以下代码对比了Python 3.X和Python 2.X的几个典型区别。由于前面提及二者不兼容,以下代码不能在同一个Python版本中成功运行。

在现代社会,计算机硬件水平飞速发展,使得计算机的性能变得非常强大,这也使得Python作为解释型语言的编译执行速度偏慢的缺点并不明显。相反Python简单易用的特点能大大降低用户学习编程语言的门槛以及缩短编写代码的时间,使其成为越来越热门的编程语言。 +DZEGvRD0i5VGbR+gBBL/uDa/lea19cbxO3tk5hT47HHIkhByJyWvTxbFE203Ubg

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