购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 Python的特点

Python是一门开源、面向对象、交互式、解释型的脚本语言,同时也是一种功能强大而完善的通用型语言。Python语言能够达到今天的业界地位,它有很多闪闪发光的优点:

1 简单易学

Python语言最大的特点就是简单:Python的语法简洁明了,Python有极其简单的说明文档,Python结构简单且关键词相对较少。和传统的编程语言C、C++、Java、C#等相比,Python对语法的要求没有那么严格,这种宽松使得用户在编写代码时比较轻松,不用在细枝末节上花费太多精力。比如:Python不要求在每个语句的最后写上分号,当然如果写上也没有什么错;Python在定义变量时不需要指明变量类型,甚至可以给同一个变量赋值不同类型的数据。Python非常贴近人类语言,阅读一段排版优美的Python代码,就像在阅读一段文章。Python是一种极简主义的编程语言,这种本质是它最大的优点之一,它使你能够专注于解决问题而不用费太多时间去搞明白编程语言本身。Python简单易用,学习成本低,看起来优雅干净,即便是非软件专业的初学者,也非常容易上手。简单,就是Python最大的魅力之一,也是它的杀手锏,用惯了Python再用其他编程语言可能会觉得难受。

2 开源免费

开源就是开放源代码,意思是所有人都可以获取和查看源代码。Python源代码遵循GPL(GNU General Public License,GNU通用公共许可证)协议,这是一个开源的协议,也就是说任何人都可以免费使用和传播它,而不用担心版权的问题。Python是FLOSS(Free/Libre and Open Source Software自由/开源软件)之一,使用者可以自由地发布这个软件的副本、阅读它的源代码、对它进行改动、把它的一部分用于新的自由软件中。Python官方将Python所有解释器和模块的代码都进行了开源设计,全世界所有Python用户都可以参与进来,一起改进Python的性能同时修补Python的漏洞,因为程序代码被研究得越多就越健壮。同时Python也鼓励所有程序员,在发布使用Python语言编写的程序代码时也进行开源。虽然开源不完全等于免费,但大多数的开源软件也是免费软件。Python就是这样一种语言,它既开源又免费。用户使用Python开发或者发布自己的程序,不需要支付任何费用,也不用担心版权问题;即使作为商业用途,Python也是免费的。

3 高级语言

高级语言的优点是使用简单方便,不用顾虑细枝末节。这里所说的“高级”,是指 Python封装并屏蔽了很多底层细节,用Python语言编写程序时程序员无须考虑如何管理内存等工作,因为Python会自动进行管理。在Python程序执行时,Python的解释器先把源代码转换成byte code(字节码)的中间形式,然后再由Python Virtual Machine(Python虚拟机)翻译成机器语言并运行。这种虚拟机的机制跟Java语言和.NET平台虚拟机的基本思想是一致的。然而相比Java和.NET虚拟机,Python虚拟机距离真实机器的距离更远,抽象层次更高。Python将许多机器层面上的细节隐藏起来,交给编译器处理,程序员不用再担心如何编译程序,这也使得Python的使用更加简单。Python程序员可以将更多的时间用于思考编程的逻辑,而不是耗费时间去关注具体的实现细节。据统计,Python程序开发的效率相对于C、C++、Java等传统语言,提升了 3~5倍。针对同样的问题或实现同样的功能,比较不同的编程语言,Python语言的实现代码往往是最短的,一般情况下Python程序的代码量是Java的五分之一!

4 面向对象

面向对象是所有现代编程语言所必须具备的特性,否则在面临大型系统和应用程序的开发时会捉襟见肘。Python是完全面向对象的语言,函数、模块、数值、字符串都是对象,并且完全支持继承、重载、派生、多继承,这些特性有益于增强源代码的复用性。Python支持面向对象,但它并不强制使用面向对象。而Java这种典型面向对象的编程语言,就强制用户必须以类和对象的形式来组织代码。Python既支持面向对象的编程,也支持面向过程和函数式的编程,对新老程序员的编程习惯都比较友好,应对各种类型的程序开发都游刃有余。

5 可移植性

Python是解释型语言,解释型语言由于无须事先编译成对应平台的机器语言,所以可移植性好,一般都是跨平台的,Python语言也不例外。基于开放源代码等优势,Python已经被广泛移植到几乎所有主流计算机平台上(在计算机行业,移植的意思就是经过一定改动就能够在不同的平台上工作)。这些平台包括 Windows、Linux、Android、 Mac OS、 PlayStation、 FreeBSD、 Macintosh、 Solaris、 OS/2、 Amiga、 AS/400、 AROS、BeOS、OS/390、z/OS、VMS、Palm OS、QNX、Psion、Acom RISC OS、VxWorks、Sharp Zaurus、Windows CE、PocketPC、Symbian以及各种Unix变种等,绝大多数Python程序都能够不做任何修改即可在上述任何平台上正常运行。可以说学习和使用Python语言,完全无须担心系统平台的问题,就可以打开通向任意计算机平台的大门。

6 功能强大

Python语言拥有异常丰富和强大的类库,丰富的类库也是Python最大的优势之一。这些类库也被称为“模块”,其功能强大,用途广泛,既可以开发小型工具,也可以开发大型企业级应用。Python的类库基本实现了所有常见的功能,从简单的字符串处理,到复杂的3D图形绘制,借助这些现成的类库都可以轻松完成。而且只要安装了Python,所有这些类库的功能都是直接可用的,这也是最吸引全世界程序开发人员使用Python的原因!用Python开发,大量的功能不用自己从零开始编写,直接使用现成的模块即可,比如要开发一个其他语言实现起来非常麻烦的“网络爬虫”(一种自动抓取互联网信息的程序),Python可能只需要几行调用类库的代码就完成了。Python首先自带一个广泛而强大的标准库,这个标准库涵盖许多编程领域,提供操作系统接口调用、文件管理、网络通信协议、字符串处理、数据库访问、图形系统等大量的功能,又被形象地称作“内置电池”。除了内置的标准库以外,Python还具备大量的第三方扩展库。第三方扩展库就是官方以外其他人开发的,可以供Python编程使用的功能模块。这些第三方模块覆盖了科学计算、人工智能、机器学习、游戏开发、Web开发、图形系统等多个领域和应用场景,比如Twisted、wxPython、Python图像等高质量扩展库。即使是一些不常用的小众功能,因为Python开源项目的广泛参与,往往也都有对应的开源模块。而且Python社区发展良好,除了Python官方不断更新和提供核心模块,很多第三方机构和大型企业也参与开发模块。

7 可扩展性

Python的可扩展性首先体现在它的类库上,这些模块的底层代码不一定都是用Python语言编写的,很多用C/C++编写的都可以供Python编程使用。Python语言本身被设计为可扩充的,但并非所有的功能都集成到语言核心里,因此,Python提供了丰富的工具和API,以便全世界的程序员都能够轻松地使用C/C++等其他语言来编写扩展库。其次,Python编译器可以被集成到其他需要脚本语言的程序内,如将Python嵌入到C/C++程序中,让C/C++程序获得“脚本化”的能力,从而向程序的用户提供脚本功能。另外,Python可以将用其他语言(比如C/C++)开发的程序轻松地联结在一起,就像粘在一起似的,因此Python又被称为“胶水语言”。这样的扩展功能意义非凡!比如Python程序的其中一部分关键代码需要非常高效地运行,或者不希望将这部分程序的算法源代码公开,那么我们可以将这部分程序用C/C++语言来编写和编译,然后在Python程序中调用它们。事实上这样的应用非常多。我们常常用C语言为Python编写底层接口和功能模块,然后在Python编程中完成程序原型开发和逻辑调用,利用Python将其他语言编写的程序进行集成和封装,实现Python程序与C/C++程序相互调用,Python还可以与Java开发的组件集成……Python语言依靠良好的可扩展性和可嵌入性,在一定程度上弥补了其运行速度偏慢的缺点。

任何编程语言都有缺点,Python也不例外:

其一是运行速度慢。运行速度慢是解释型编程语言的通病,Python程序的运行速度不仅比以速度快著称的C和C++慢很多,而且比使用虚拟机的Java也要慢。除了解释型语言的原因,Python语言还因为其作为高级语言的特性,屏蔽了很多编程方面的底层细节。比如自动内存管理,Python要多做很多工作,这些工作很消耗资源和性能,这也是Python为了编程简单化而付出的代价。但运行速度的快与慢,其实是相对的。大多数应用程序和使用场景对速度的要求并不高,Python运行速度稍慢的缺点根本不会带来什么大问题。比如用户浏览网站时,打开一个网页等待的时间一部分是网站服务器程序的执行时间,另一部分是等待网络连接的时间。Python服务器程序跟其他语言程序在执行速度上的差别可能是 0.002秒或 0.001秒,但本身网络连接的时间可能需要 1秒甚至 2秒,那么服务器程序运行速度的快慢对用户来说根本感觉不出来。这就好比高速公路限速每小时100公里,理论时速400公里的F1赛车和最高时速200公里的家庭轿车在道路上最高都只能以每小时100公里的速度行驶,那么F1赛车的最高速度的优势体现不出来,但家庭轿车的乘坐舒适性和驾驶便捷性的优势反而对乘客更加有用了。随着计算机硬件配置的飞速发展,硬件本身的运算速度越来越快,硬件性能的提升极大地弥补了软件性能的不足,编程语言本身在执行效率方面的差异就变得没有那么重要了。另外,Python作为“胶水语言”,那些对运行速度要求很高的程序,可以使用 C/C++语言来改写,再用 Python程序来调用。所以总体来说,Python语言在绝大部分使用场景和应用领域的运行速度,都是足够快的。我们作为程序员,在现代计算机的硬件速度足够快的情况下,不要太在意程序的运行速度,Python语言在开发效率方面带来的收益往往比在运行速度上造成的损失要重要得多。

其二是代码加密困难。发布Python程序,跟发布C语言等编译型语言的程序有所不同。编译型语言不用发布源代码,源代码会被编译成可执行程序,因此发布出去的是编译后的可执行程序(比如Windows上常见的.exe文件),而要从可执行文件反推出源代码几乎是不可能的。但Python是解释型语言,解释型的语言必须把源代码发布出去,因为程序是一边解释源代码一边运行,因此对Python源代码加密比较困难。但这个“缺点”仅仅在要把Python软件直接卖给别人又不想提供源代码的时候存在,而这是一种传统的软件销售模式。随着互联网和云时代的到来,靠卖软件授权的商业模式越来越少了,最新的业务模式是通过网站或移动应用来提供服务,这种对服务进行收费的模式不需要把源代码提供给客户。而且开放源代码是软件产业的大趋势,软件开源运动和互联网自由开放的精神是一致的。就如同Python语言本身一样,开源会促进软件产业和编程工作更快更好地发展普及,我们程序员都应树立和适应新的观念。

其三是独特的语法。Python语言有一些区别于其他主流编程语言的独特语法,其中最有争议的就是强制缩进规则。Python跟其他大多数编程语言(比如C语言)的自由代码风格不同,也没有采用其他语言通过花括号等符号来划分代码块和函数的方式。Python程序代码中一个模块的界限,完全是由每行代码首字符在这一行的位置来决定的(而C语言是用一对花括号来明确地定出模块的边界,与字符的位置无关)。这种强制格式的要求,可能给很多初学者带来困惑,还会造成一些代码在阅读上的困难。甚至有很多从其他编程语言转过来的经验丰富的程序员,也会对这种独特的语法感到不适应。当然这种不便只是暂时的,只要程序员适应了Python语言的编程风格,这些独特的语法并不会成为编程的困扰。而且强制缩进的规则,使Python的程序代码显得更加清晰和美观。

总体来说,Python语言的哲学和定位就是“简单、明确、优雅”,尽量少写代码,尽量写容易明白的代码,所以Python程序代码最大的特点就是看上去简单易懂。Python超强的功能、简洁的语法、高级的数据类型、自动内存管理、健壮的虚拟机和丰富的模块库,可以极大地提高程序开发的生产力。我们在进行Python编程的时候,可以专注于解决问题的本身,而不用考虑编程语言和编程工具等各方面的细枝末节。在简单的环境中做一件单纯的事情,Python使得编程成为有趣的创新活动而不是琐碎的重复劳动! Z8CtPxVh+djz9hVTKNmF+9HoKN8WTTY3XENRg8t4PYD1om8h2mfTsuQt46UP5jGA

点击中间区域
呼出菜单
上一章
目录
下一章
×