Python语言基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 Python简介

Python是一种开源的、免费的、解释型的、跨平台的、动态的、面向对象的高级程序语言。

开源的意思就是源代码开放,任何人都可以查看其源代码甚至参与维护和升级工作,与世界各地的使用者分享自己的贡献。GNU组织就是一个致力于发布和维护开源软件的典型代表,其主张也被递归地写进了名字中,GNU的意思是“GNU is Not Unix”。IT产品也有收费和免费之分,如Windows、macOS、Unix等都是收费的软件,但是Linux系列的操作系统(如Ubuntu)是免费的。GO语言是收费的,但Python是免费的。这就给大众更多选择的空间,使我们的世界更加多元化。

Python是一门解释型的语言,并且具有跨平台性。这要怎么理解呢?“解释型”其实是指将用Python写成的语句转化为CPU可识别的机器语言的一种方式,即随着Python语句的执行,逐行地将Python语句“解释”成机器语言并执行的方式。我们称负责解释(翻译)的机器为解释器(翻译器)。对应解释型语言,还有一种称为编译型语言的程序语言。编译型语言在运行前,需要将所有语句都翻译成机器语言。

现在来看两种语言的原理区别,如图1-7所示。解释型语言在运行时,依次翻译每行语句,每翻译完一行,就送去CPU执行。编译型语言则一次性翻译所有语句,获得一个完整的机器码文件(称为可执行文件),之后将这个文件送给CPU执行。在部署了Windows操作系统的计算机上,以扩展名“.exe”(Execution的前三个字母)标记结尾的文件都是这种机器码文件,一般双击后会直接运行。因此,在执行效率上,解释型语言要比编译型语言低。另外,要执行Python语句,就必须获得其原始语句,这样一来,Python的源代码就不具有保密性,而用编译型语言写成的语句可以使用编译后的机器码执行,送机器码即可,因此后者的保密性更好一些。

图1-7 解释型语言与编译型语言的原理区别

但是,解释型语言也并非没有优点,其跨平台性通常比编译型语言好得多,如图1-8所示。只要目标机器上安装了对应自己平台的解释器版本,那么,同样的Python源代码就既可以在Windows平台上运行,也可以在macOS平台上运行。而如果要在不同的平台上执行同一段编译型语句,则必须先在本地用不同的目标编译器生成不同版本的机器码,再把它们发送给目标机器执行。不同的平台使用不同的CPU和操作系统,其自身框架的设计决定了它们都有各自不同的可接受机器码指令集。换句话说,解释型语言的翻译工作是在目标机器上完成的,而编译型语言的翻译工作是在本地完成的。

什么是动态和面向对象呢?简单来说,动态是指我们使用Python语言定义的内容的意义可以随着上下文改变(具体细节我们在第3章讲解)。面向对象是一种编写Python语句的思路,或称为思考方式,这种方式使我们在编写Python语句时,可以类比我们对世界上真实事物的抽象方式。例如,我们习惯将事物归类,每类事物都有自己的特点,这些特点可能是静止的属性,也可能是某种潜在的功能或能力。相应地,我们在Python语句中定义类、类的属性及类的功能。当然,类可以被实例化,进而得到类的实例,这种关系很像集合与集合中元素的关系。但是,面向对象的话题涉及内容比较多,有时也很抽象,我们将其留到第8章专门讨论。

图1-8 解释型语言与编译型语言的跨平台特性区别