1.2 Python的特点
Python是一种面向对象的、解释型的、通用的、开源的脚本编程语言,具有非常多的优点。
1.简单易学
Python是一种代表极简主义的编程语言,阅读一段排版优美的Python代码,就像在阅读一个英文段落,非常贴近人类语言,所以人们常说,Python是一种具有伪代码特质的编程语言。
和传统的C/C++、Java、C#等语言相比,Python对代码格式的要求没有那么严格,这种宽松使得用户在编写代码时比较舒服,不用在细枝末节上花费太多精力。例如:Python不要求在每个语句的最后写分号,当然写上也不会报错;同时定义变量时不需要指明类型,甚至可以给同一个变量赋值不同类型的数据。这两点也是PHP、JavaScript、MATLAB等常见脚本语言都具备的特性。
一旦简单了,一件事情就会变得很纯粹。我们在开发Python程序时,可以专注于解决问题本身,而不用顾虑语法的细枝末节。在简单的环境中做一件纯粹的事情,那简直是一种享受。
2.开源
开源即开放源代码,意思是所有用户都可以看到源代码。
Python的开源体现在两方面。
(1)程序员使用Python编写的代码是开源的
比如,我们开发了一个BBS系统,放在互联网上让用户下载,那么用户下载到的就是该系统的所有源代码,并且可以随意修改。这也是解释型语言本身的特性,想要运行程序就必须有源代码。
(2)Python解释器和模块是开源的
官方将Python解释器和模块的代码开源,是希望所有Python用户都参与进来,一起改进Python的性能,弥补Python的漏洞,代码被研究的越多就越健壮。
3.高级语言
Python是一种高级语言。高级是指Python封装较深,屏蔽了许多底层细节,无须再考虑如何管理程序使用的内存之类的细节。Python语言提供了一套完善的内存管理机制和垃圾处理机制,将程序员从烦琐易错的内存管理工作中解放出来,专注于程序的逻辑实现,从而大大地提高了开发效率,减少了错误率。
4.可移植性
Python可以跨操作平台运行,即Python程序的核心语言和标准库可以在Linux、Windows及其他带有Python解释器的平台上无差别地运行。其原因有如下3个方面。
①Python发行时自带的标准库和模块在实现上也都尽可能地考虑了跨平台的可移植性。
②Python程序自动编译成可移植的字节码,这些字节码在已安装兼容版本的Python上运行的结果是一样的。
③Python的标准实现是由可移植的ANSI C编写的。
5.解释型
解释型是指Python代码是通过Python解释器来将代码“解释”为计算机硬件能够执行的芯片语言的。而用C语言编写的代码,则需要通过编译、链接、生成exe文件,才能变成计算机能运行的芯片语言。因此,Python语言与C语言在转换成芯片语言的方式上有着本质的不同,用Python语言编写的程序不需编译成二进制机器指令,可以直接从源代码运行程序。在计算机内部,运行Python程序时,Python解释器把源代码翻译成字节码指令的中间形式,然后再根据字节码指令执行对应的二进制代码。Python语言的这种特性称为解释型。
6.面向对象
面向对象是现代编程语言一般都具备的特性,否则在开发大型程序时会捉襟见肘。
Python既支持面向编程,也支持面向对象,不强制使用面向对象。Java是典型的面向对象编程语言,但是它强制必须以类和对象的形式来组织代码。在面向过程语言中,程序开发是以实现执行过程为设计思想,以函数为程序主体构建起来的。在面向对象的语言中,程序开发是以描述执行人即对象的特征及其相互作用为主要设计思想,以由属性和方法组成的对象为程序主体构建起来的。
7.丰富的库
Python的标准库非常庞大,基本实现了所有的常见功能,从简单的字符串处理,到复杂的3D图形绘制,借助Python的标准库都可以轻松完成。
除了标准库以外,还有许多其他高质量的扩展库,如Numpy(数值计算)、Twisted(网络工具)、Pillow(图像处理)等。
8.可扩展性和可嵌入性
Python的可扩展性体现在它的模块,Python具有脚本语言中最丰富和强大的类库,这些类库覆盖了文件I/O、GUI、网络编程、数据库访问、文本操作等绝大部分应用场景。
这些类库的底层代码不一定都是Python,还有很多C/C++的身影。当需要一段关键代码运行速度更快时,就可以使用C/C++语言实现,然后在Python中调用它们。还可以将Python程序嵌入C或C++程序中,从而提供脚本功能。由于Python能把其他语言“粘”在一起,也被称为“胶水语言”。
Python依靠其良好的扩展性,在一定程度上弥补了其运行效率慢的缺点。
除了上面提到的各种优点,Python也是有缺点的。
(1)运行速度慢
运行速度慢是解释型语言的通病,Python也不例外。
Python速度慢不仅是因为一边运行一边“翻译”源代码,还因为Python是高级语言,屏蔽了很多底层细节。这个代价也是很大的,Python要多做很多工作,有些工作是很消耗资源的,比如管理内存。
Python的运行速度几乎是最慢的,不但远远慢于C/C++,还慢于Java。
但是速度慢的缺点往往也不会带来什么大问题。首先计算机的硬件速度越来越快,多花钱就可以买高性能的硬件,硬件性能的提升可以弥补软件性能的不足。其次有些应用场景可以容忍速度慢,比如网站,用户打开一个网页的大部分时间都在等待网络请求,而不是等待服务器执行网页程序。服务器用1 ms执行程序和用20 ms执行程序,对用户来说是毫无感觉的,因为网络连接时间往往需要500 ms甚至是2000 ms。
(2)代码加密困难
不像编译型语言的源代码会被编译成可执行程序,Python直接运行源代码,因此对源代码加密比较困难。