Python作为一门开发语言从面世发展至今,已经成为使用最广泛的计算机语言之一,这绝不是偶然的,而是因为它具备了很多适合各种开发需要的优秀特性,这些特性主要包括:
* 写法简洁严谨、优雅易读
Python语言相对于其他一些语言来说,写法相对简洁,但是格式要求又是相对严格的,例如用严格的缩进格式来表示嵌套的程序语句等。但严格的要求也带来了很大的回报,Python程序因而看起来结构非常清晰,易于理解,也有助于沟通。有人说Python是最优雅的一门计算机语言,绝不是没有道理的。Python编码核心的理念被形容为:“漂亮的比丑的好、明确的比含混的好、简单的比复杂的好、复杂的比混乱的好……”。
* 完备的语言特性支持
Python完整具备了一门计算机编程语言应用的所有主要特性,并有所拓展,很多特性实现的非常优秀。这些特性包括:动态数据类型支持、自动内存管理、支持主流的包括结构化编程和面向对象编程在内的多种编程模式、完善的异常处理机制等。完备地语言特性支持,使得开发者在选取Python作为编程语言时不会有过多顾虑。
* 跨平台支持
Python目前支持绝大多数主流计算机操作系统平台,包括Windows、macOS、Linux等,并且macOS和大多数Linux版本中,已经内置了Python语言的运行和开发环境。Python也支持很多嵌入式操作系统,例如很有名的超微型电脑树莓派(Raspberry Pi)中就使用Python作为主要开发语言;还出现了MicroPython这种转为微控制器和电路控制板设计的定制版Python。广泛的跨平台支持,意味着编写一次代码即可不加修改或仅作少许修改地应用在很多平台上,大大减少了重复开发的工作量和其他成本。
* 良好的开放性和可扩展性
Python语言具备良好的开放性和可扩展性,开发者可以很方便地编写自己的代码库以便以后重复使用,也可以将这些代码库共享出来供大家使用。在开发过程中,使用这些代码库也是相当方便的。
* 庞大的功能代码库
Python本身作为编程语言来说,已经具备比较完备的编程语言方面的功能支持;而由于前述Python的开放性,多年来吸引很多人为Python编写了海量的第三方代码库,使得Python的功能越来越强大,应用范围越来越广。在此过程中,Python也吸纳了不少优秀的第三方库进来,形成了基本语言核心、完备的基础功能库、海量的外沿第三方功能库的三级体系。
* 与其他语言良好的互通性
Python一直被当作“胶水语言”或者叫“黏合剂语言”中的一种。所谓“胶水语言”,指的是可以较容易地调用其他语言编写的程序、与其他语言编写的程序进行信息共享和互通,反过来,也可以嵌入到其他语言中被调用来做一些自己擅长的事情,因而在开发较大的系统的时候,可以作为总体协调的语言或者作为不同子系统或功能模块间沟通的桥梁。Python编程简便,又具备快速处理各种形式信息的能力,本身又是解释型的脚本语言,因此非常适合作为胶水语言来使用。目前,可以嵌入Python的知名软件包括:ArcGIS、Autodesk Maya、Corel Paint Shop Pro、FreeCAD、SPSS statistical software、Inkscape、GIMP、gedit、Vim等。
由于Python语言的很多优良特性,后来产生的很多编程语言或都不同程度地受到了它的影响,包括Ruby、Go语言、Swift、CoffeeScript、ECMAScript、Groovy等。
当然,Python语言从创始之初,就也有自己的一些不足之处。但总的来说,Python在不断发展得越来越功能齐备,现在,很难想象的到Python不能做什么。但为了做到使用Python时心中有数,下面也列出Python历来所被人认为是缺陷的一些特点:
* 编写的程序运行速度慢,性能低
这是解释型语言或者说脚本语言的通病。由于需要解释器来逐行解释执行代码,将高级语言翻译成机器可以理解的底层代码,效率肯定无法像编译型语言直接运行编译好的机器码那样高效。并且,解释器相当于Java的虚拟机,本身加载还需要时间,都会造成解释性语言性能较低。但这个问题在硬件性能大发展的今天,已经相对不突出了,运行速度稍微慢些已经无法影响人们对Python编程和维护代码方便的喜爱了。另外,Python本身也在不断改进,使用了诸如预编译等方法来提升性能。
* 不是很适合做图形界面
Python语言一般来说,在命令行界面中比较常用,并不是很适合做图形界面,这点在出现了几个图形界面框架之后,得到了一定的改善。但整体来看,用Python做界面的情况相对较少,如果开发的软件需要很丰富的图形界面功能,一般会采用其他语言开发,Python可以作为嵌入语言使用。另外,随着BS结构(即WEB网页加后台服务)的流行,Python也有比较完善的对应框架出现,可以一定程度上解决图形界面的问题。
* 代码不易加密
这也是解释型语言的通病,由于是从源代码来解释执行,所以源代码都是明文,容易被抄袭。其实HTML网页和Javascript语言也存在此问题,Javascript语言其实也是被浏览器解释执行的,因而不易进行加密。现在,可以通过预编译的方式对代码进行打包发布,能够起到一定的保护作用,另外还有一些其他更复杂的保护手段。
* 多线程并发处理效果不佳
由于Python(特别是CPython)采用了所谓的“全局解释器锁”,导致在Python程序运行时,同一时间只能有一个线程运行,因此Python的多线程处理能力相对较差。这个问题可以通过多进程等其他方式来解决。
* 不适合移动端开发
Python不是很适合移动端开发,例如,很少有人用Python来做手机应用软件。虽然不断有新的面向移动端开发的Python框架出现,但到目前为止,Python开发移动端应用还是不如其他针对性更强的开发语言。
总的来说,Python的缺点与它所带来各种便利相比,基本可以忽略。除非是在一些性能要求或图形界面处理能力要求极高的场合,否则即使是大型的企业应用,也可以应付裕如。