细说Python编程:从入门到科学计算
上QQ阅读APP看书,第一时间看更新

1.1 初识Python

Python是荷兰人Guido van Rossum(Guido)于1989年发明的一种面向对象的解释型编程语言。Guido希望有一种语言能够像C语言那样,既可以全面调用计算机的功能接口,又可以像Shell那样轻松地编程。由荷兰的CWI(Centrum Wiskunde & Informatica,数学和计算机研究所)所开发的ABC语言让Guido看到了希望。

ABC语言希望程序变得容易阅读,容易使用,容易记忆,容易学习,并以此来激发人们学习编程的兴趣。虽然具备了良好的可读性和易用性,但是ABC语言最终没有流行起来。在当时,ABC编译器需要比较高配置的计算机才能运行,同时这些使用者需要精通计算机。除了硬件成本高外,ABC语言的设计也存在以下致命问题:

· 拓展性差。不是模块化语言,如果想在其中增加功能,就必须改动很多地方。

· 不能直接进行IO(Input/Output,输入/输出)。ABC语言不能直接操作文件系统。尽管可以通过诸如文本流的方式导入数据,但ABC语言无法直接读写文件,输入输出困难对于计算机语言来说是致命的。

· 过度革新。ABC语言用自然语言的方式来表达程序的意义。然而对于程序员来说,更习惯用function或者define来定义一个函数,同样,程序员也习惯了用等号(=)来赋值变量。这样实际上增加了程序员的学习难度。

· 传播困难。ABC语言的编译器很大,必须被保存在磁带上。当时,Guido在访问的时候,就必须有一个磁带用于安装ABC编译器,这样,ABC语言就很难快速传播。

1989年,圣诞节假期,Guido开始编写Python语言的编译、解释器,他希望这个叫作Python的新的编程语言能够实现他的理念(一种介于C和Shell之间,功能全面,易学易用,可拓展的语言)。

1991年,第一个Python编译器诞生。它用C语言实现并能够调用C库(.so文件)。从一出生,Python已经具有类(class)、函数(function)、异常处理(exception),包括表(list)和词典(dictionary)在内的核心数据类型,以及模块(module)为基础的拓展系统。

最初,Python完全由Guido本人开发,并得到了同事的欢迎,他们迅速反馈使用意见,并参与到Python的改进中,构成了Python的核心团队。他们将自己大部分的业余时间用于开发Python。Python被称为Battery Included(含义为自带了相当齐全的软件库),是说它及其标准库的功能强大。

Python的开发者来自不同领域,他们将不同领域的优点带给Python。比如Python标准库中的正则表达(Regular Expression)是参考Perl,而lambda、map、filter、reduce函数参考了Lisp。Python本身的一些功能以及大部分的标准库来自社区。随着Python社区的不断扩大,进而拥有了自己的Newsgroup、网站(python.org)以及基金(Python Software Foundation)。从Python 2.0开始,Python转为完全开源的开发方式。社区气氛已经形成,工作被整个社区分担,Python也获得了更加高速的发展。

到今天,Python的框架已经确立。Python语言以对象为核心组织代码(Everything is object),支持多种编程范式(Multi-paradigm),采用动态类型(Dynamic Typing),自动进行内存回收(Garbage Collection),支持解释运行(Interpret),并能调用C库进行拓展。Python的优点很多,比如具有强大的标准库、语法简单、免费开源、能跨平台、可移植性好、模块众多、可扩展性强等。上述特点使得Python在人工智能、Web开发、数据挖掘与分析、游戏开发等领域得到了广泛应用。世界上著名的公司(包括Google、YouTube、Facebook、IBM、华为、百度、字节跳动等)都在用Python,而且它们也在不断招收使用Python语言的工程师。因此,掌握Python会为你的事业和工作添加腾飞的翅膀。