且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Python数据科学实践指南》——第1章 Python介绍 1.1 Python的版本之争

更新时间:2022-10-04 23:10:46

本节书摘来自华章计算机《Python数据科学实践指南》一书中的第1章,第1.1节,作者 纪路,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第1章

Python介绍

本书主要介绍数据科学所使用的工具,但因为每一种语言都有自己的生态系统,而笔者多用Python,所以本书主要会从Python的角度来介绍这些工具。阅读本书的读者,不管之前的基础如何,如果对Python这门编程语言有一定的了解,将能更好地掌握书中内容。可能有很多读者曾经在学校里学过C/C++或是VB,又或者听说过Java、PHP等这样广泛使用的编程语言,初闻Python的时候可能会对这个名字略感陌生,不过这一点并不能阻碍Python成为数据科学领域的“一等公民”。从本质上来说,编程语言都是类似的,即通过计算的方式表达人类大脑中的想法,可能读者现在还想象不出来在电脑上浏览网站的动作是如何转换成公式,并通过电脑进行计算的。这个看似简单的动作其实包含了一系列从低级到高级的抽象,也就是我们常说的算法、设计模式等内容。现在的编程语言有上千种之多,虽然各有各的特色,但是都脱离不了基本的算法和设计模式。很多有用的框架都在多种编程语言上实现过,他们的功能几乎是一致的。不过这些种编程语言中也有着一些明显的区别,表1-1提供了区分不同编程语言的一些维度。

《Python数据科学实践指南》——第1章 Python介绍   1.1 Python的版本之争

由于Python是解释运行的,因此并不需要提前编译,省去了大量的麻烦,并且可以在大多数常见的操作系统上执行。

1.1 Python的版本之争

笔者非常希望这本书是你的第一本Python书,这样本书就不用去解释为什么Python会有两个不兼容的版本了。但是,这个问题必须解释清楚!因为这是一本入门类图书,不仅应该讲授当下必须了解的知识,还应当适当地回顾历史、展望未来。Python之父吉多·范罗苏姆是在一个圣诞节的假期为了打发无聊时光而开发的Python早期版本,不过当时由于电脑性能太差,而Python的设计又强调通过消耗电脑的时间来节约人力的时间,导致Python程序运行缓慢,因此在早期并没有受到太多关注。2001年Python才发布了2.0版本,实际上在2.4版本发布的2004年之后Python的使用才开始快速增长。Python 2.5版本在以前是一个非常流行的版本,以至于这个版本被维护了很多年,至今仍然能够看到很多以这个版本撰写的图书。在这个时期电脑的性能得到飞速提升,程序员们也慢慢地接受了这种花费计算机的一些时间来节约自己的时间的理念。在Python 2.x发布了9年之后的2009年,Python 3.x发布了,为了解决2.x版本中的一些早期设计缺陷,以及包括字符串编码等Python老大难问题。不过这似乎也带来了更多的问题,在经过了3个版本的补救之后,3.4版对Python3.x进行了大刀阔斧的修改,以至于在3.x的版本中3.4之前和之后的版本也并不兼容。好在当时迁移到3.x的项目并不多,不过这也确实给人以Python 3.x不靠谱的印象,因此也为以后3.x版本的推广增加了一些难度。当然坊间流传的另外一个原因是“Python 3.x比Python 2.x慢”,我不得不承认这是个事实,但Python本来也不是以快为目的而设计的,所以真的不必在意这一点。

目前,常用的Python有两个版本,Python 2.x和Python 3.x(通常指3.4以后的版本,3.0-3.3版本官方已经不推荐使用了),两个版本在很多方面都不兼容,甚至简单的“打印”输出都不兼容,所以基本上没办法无痛地将写好的Python程序在两个不同版本的解释器上运行。Python 3.0于2009年年初发布,Python社区从版本2向版本3的跨越用了7年时间,但仍然说不上成功,大量有用的库仍然不支持Python 3。即使有这样的问题,新版本的Python仍有不少优点,比如它统一了Python 2中比较混乱的部分,解决了编码问题,增加了新式类,尤其在Python 3.5这个版本中,还增加了异步关键字async、await等,这些改变使得Python 3相比于Python 2有着很大的优势。然而在本书写作之时,仍然有一些重要的库不支持Python 3,所以笔者推荐使用Python 2.7进行本书的学习。不过为了着眼未来,本书会尽量使用Python 3的风格来书写程序,并且会在首次出现时注明,希望能够帮助那些未来会使用Python 3的读者减少一些迁移的痛苦。