Python有哪些技术上的优点?比其他语言好在哪儿?

Python有哪些技术上的优点?比其他语言好在哪儿?,第1张

Python有哪些技术上的优点

1. 面向对象和函数式

从根本上讲,Python是一种面向对象的语言。它的类模型支持多态、运算符重载和多重继承等高级概念,并且以Python特有的简洁的语法和类型为背景,OOP十分易于使用。事实上,即使你不懂这些术语,仍会发现学习Python比学习其他OOP语言要容易得多。

除了作为一种强大的代码组织和重用手段以外,Python的OOP本质使它成为其他面向对象系统语言的理想脚本工具。例如,通过适当的粘接代码,Python程序可以对C++、Java和C#的类进行子类的定制。

OOP只是Python的一个选择而已,这一点非常重要。即使不能立马成为一个面向对象高手,但你同样可以继续深入学习。就像C++一样,Python既支持面向对象编程也支持面向过程编程的模式。如果条件允许,其面向对象的工具可以立即派上用场。这对策略开发模式十分有用,该模式常用于软件开发的设计阶段。

除了最初的过程式(语句为基础)和面向对象(类为基础)的编程范式,Python在最近几年内置了对函数式编程的支持——一个多数情况下包括生成器、推导、闭包、映射、装饰器、匿名lambda函数和第一类函数对象的集合。这是对其本身OOP工具的补充和替代。

2. 免费

Python的使用和分发是完全免费的。就像其他的开源软件一样,例如,Tcl、Perl、Linux和Apache。你可以从Internet上免费获得Python的源代码。你可以不受限制地复制Python,或将其嵌入你的系统或者随产品一起发布。实际上,如果你愿意的话,甚至可以销售它的源代码。

但请别误会:“免费”并不代表“没有支持”。恰恰相反,Python的在线社区对用户需求的响应和商业软件一样快。而且,由于Python完全开放源代码,提高了开发者的实力,并产生了一个很大的专家团队。

尽管研究或改变一种程序语言的实现并不是对每一个人来说都那么有趣,但是当你知道如果需要的话可以做到这些,该是多么的令人欣慰。你不需要去依赖商业厂商的智慧,因为最终的文档和终极的净土(源码)任凭你的使用。

Python的开发是由社区驱动的,是Internet大范围的协同合作努力的结果。Python语言的改变必须遵循一套规范而有约束力的程序(称作PEP流程),并需要经过规范的测试系统进行彻底检查。正是这样才使得Python相对于其他语言和系统可以保守地持续改进。

尽管Python 2.X和Python 3.X版本之间的分裂有力并蓄意地破坏了这项传统,但通常它仍然体现在Python的这两个系列内部。

3. 可移植

Python的标准实现是由可移植的ANSI C编写的,可以在目前所有主流平台上编译和运行。例如,如今从掌上电脑(PDA)到超级计算机,随处可见 Python的运行。Python可以在下列平台上运行(这里只是部分列表):

Linux和UNIX系统

微软Windows(所有现代版本)

Mac OS(包括OS X 和经典版)

BeOS、OS/2、VMS和QNX

实时 *** 作系统,例如VxWorks

Cray超级计算机和IBM大型机

运行Palm OS、PocketPC和Linux的PDA

运行 Symbian OS和Windows Mobile 的移动电话

游戏终端和iPod

运行谷歌安卓系统和苹果iOS系统的平板和智能手机

以及更多

除了语言解释器本身以外,Python发行时自带的标准库和模块在实现上也都尽可能地考虑到了跨平台的移植性。此外,Python程序自动编译成可移植的字节码,这些字节码在已安装兼容版本Python的平台上运行的结果都是相同的。

这些意味着Python程序的核心语言和标准库可以在Linux、Windows和其他带有Python解释器的平台上无差别地运行。大多数Python外围接口都有平台相关的扩展(例如COM支持Windows),但是核心语言和库在任何平台都一样。

就像之前我们提到的那样,Python还包含了一个叫作tkinter(Tkinter的2.X版本)的Tk GUI工具包,它可以使Python程序实现功能完整的,无须做任何修改即可在所有主流GUI桌面平台运行的用户图形界面。

4. 功能强大

从语言特性的角度来看,Python是一个混合体。它丰富的工具集使它介于传统的脚本语言(如Tcl、Scheme和Perl)和系统语言(如C、C++和Java)之间。Python提供了所有脚本语言的简单和易用性,并且具有那些在编译语言中才能找到的高级软件工程工具。

不像其他脚本语言不同,这种结合使Python在长期大型的开发项目中十分有用。下面是一些Python工具箱中的工具简介:

动态类型

Python在程序运行过程中跟踪对象的类型,不需要代码中进行关于复杂的类型和大小的声明。事实上,Python中没有类型或变量声明这种做法。因为Python代码不约束数据的类型,它往往自动地应用了一种广义上的对象。

自动内存管理

Python自动为对象分配空间,并且当对象不再使用时将自动撤销空间(“垃圾回收”),当需要时自动扩展或收缩。正如你将学到的,Python能够帮你完成底层的内存管理。

大型程序支持

为了能建立更大规模的系统,Python包含了模块、类和异常等工具。这些工具允许你把系统组织为组件,使用OOP重用并定制代码,并以一种优雅的方式处理事件和错误。前面提到的Python函数式编程工具,提供了实现相同目标的其他方法。

内置对象类型

Python提供了常用的数据结构作为语言的基本组成部分。例如,列表(list)、字典(dictionary)、字符串(string)。我们将会看到,它们灵活并易于使用。例如,内置对象可以根据需求扩展或收缩,可以任意地组织复杂的信息等。

内置工具

为了对以上对象类型进行处理,Python自带了许多强大的标准 *** 作,包括拼接(concatenation)、分片(slice)、排序(sort)和映射(mapping)等。

库工具

为了完成更多特定的任务,Python预置了许多预编码的库工具,从正则表达式匹配到网络都支持。当你掌握了语言本身,就能在应用级的 *** 作中使用Python的库工具。

第三方工具

由于Python是开源的,它鼓励开发者提供Python内置工具之外的预编码工具。你可以在网上找到COM、图像处理、数值编程、XML、数据库访问等许多免费的支持工具。

除了这一系列的Python工具外,Python保持了相当简洁的语法和设计。综合这一切得到的就是一个具有脚本语言所有可用性的强大编程工具。

请点击输入图片描述

5. 可混合

Python程序可以以多种方式轻易地与其他语言编写的组件“粘接”在一起。例如,Python的C语言API可以帮助Python程序灵活地调用C程序。这意味着可以根据需要给Python程序添加功能,或者在其他环境系统中使用Python。

例如,将Python与C或者C++写成的库文件混合起来,使Python成为一个前端语言和定制工具。就像之前我们所提到过的那样,这使Python成为一个很好的快速原型工具;系统可以在开发初期出于速度考虑使用Python实现,然后转移至C,根据不同时期性能的需要逐步实现系统。

6. 相对简单易用

同其他语言(如C++、Java和C#)相比,Python编程对大多数用户来讲出奇得简单。要运行Python程序,你只需简单地键入Python程序并运行就可以了。不需要其他语言(如C或C++)所必需的编译和链接等中间步骤。

Python可立即执行程序,这形成了一种交互式编程体验和不同情况下快速调整的能力,往往在修改代码后几乎能立即看到程序改变后的效果。

当然,开发周期短仅仅是Python易用性的一方面的体现。Python提供了简洁的语法和强大的内置工具。实际上,Python曾被称为“可执行的伪代码”。由于它减少了其他工具常见的复杂性,在实现相同的功能时,Python程序比采用其他流行语言编写的程序更为简单、小巧,也更灵活。

请点击输入图片描述

7. 相对简单易学

这一部分引出了本书的重点:尤其同其他广泛使用的编程语言比较时,Python语言的核心相当简单易学。实际上,如果你是一位有经验的程序员,你可以期望在几天内写出小规模的Python代码,你也许能在几个小时之内习得Python的一招一式,但是你并不能指望在如此短的时间内成为专家(忘掉市面上的那些宣传广告吧)。

当然,掌握任何像今天Python这样的充实主题都不是一件轻松事,我们将在本书的剩余部分致力于此项任务。但是为了掌握Python而进行的真正投资是非常值得的——最终你会获取几乎在每个计算机应用程序领域都适用的编程技能。此外,很多人还发现Python的学习曲线比其他的编程语言更加平缓。

这对于那些想学习语言以在工作中应用的专业人员来说是一个好消息,同样对于那些使用Python层进行定制和控制的系统的终端用户来说,也是一个好消息。如今,许多系统都依赖于这一事实:用户可以在没有或者得到很少支持的情况下就学到足够的Python知识以便当场增删他们的Python定制化代码。

此外,Python还孕育出一群不以编程为生而以编程为乐的用户,他们并不需要掌握全面的软件开发技巧。尽管Python还是有很多高级编程工具,但不论对初学者还是行家来说,Python的核心语言精髓仍是相当简单的。

8. 以Monty Python命名

好的,在讲完这么多技术方面的优势后,我想再揭露一个Python世界里面令人惊奇而保守良好的小秘密。

尽管Python的书和图标中有很多爬行动物,真相却是Python以英国喜剧组“Monty Python”命名——这是BBC 在20世纪70年代喜剧《Monty Python's Flying Circus》的制片方,也是至今仍在流行的少量包括《Monty Python and the Holy Grai》在内的大电影的制片方。Python的最初创作者是Monty Python的粉丝,这同其他许多的软件开发者一样(事实上,这两个领域存在某种对称性……)。

请点击输入图片描述

▲《Python学习手册》书封上的爬行动物

这段有趣的历史无疑增加了Python代码例子的幽默属性。例如,作为一般变量名命名传统的“foo”和“bar”在Python世界中变成了“spam”和“eggs”。而在Python中偶尔出现的“Brian”,“ni”和“shrubbery”表现得也同此类似。它甚至影响了Python的整个社区。

当然了,如果你对这部喜剧非常熟悉,就能体会这其中的笑点,但如果不熟悉则相反。你不必非得熟悉Monty Python这部剧来了解从剧中获得灵感的例子(包括你将在本书中看到的许多例子),但至少你现在知道它们的起源了。(嗨——我已经告诉你啦。)

02

Python和其他语言比较起来怎么样

最后,你也许已经知道了,人们往往将Python与Perl、Tcl和Javat等语言相比较。这部分总结这方面的一些普遍共识。

我想预先表明我个人并不喜欢通过诋毁竞争者来获胜——这在长期是行不通的,而且也不是这里的目的。此外,这并不是一场零和游戏——绝大多数的程序员在他们的职业生涯中都会使用许多语言。尽管如此,编程工具也展示出值得考虑的选择和权衡。毕竟,如果Python没有比它的竞争者提供更多的东西,那么它一开始就不会被人们使用了。

请点击输入图片描述

我们之前已经介绍过性能上的权衡,那么这里重点谈一下功能。尽管下面列举的这些语言也是值得学习和使用的有力工具,但人们通常认为Python:

比Tcl强大。Python强有力地支持“大规模编程”,使其适用于开发大型系统,它的应用程序库也更加丰富。

比Perl更具可读性。Python有着简洁的语法和简单连贯的设计,这反过来使得Python更具可读性和更易于维护,同时有助于减少程序bug。

比Java和C#更简单、更易于使用。Python是一门脚本语言,但Java和C#两者从像C++这样更加大型的OOP系统语言中继承了许多语法和复杂性。

比C++更简单、更易于使用。Python代码比等效的C++代码更加简单,长度只有其五分之一到三分之一。尽管作为脚本语言,Python有时能扮演许多不同的角色。

比C更加简单和高级。Python远离底层硬件架构从而降低了代码复杂性,拥有更好的组织结构,并比C(C++的祖先)更加友善。

比Visual Basic更强大,用途广泛,也更具备跨平台特性。Python是更加广泛使用的更丰富的语言,它的开源本质意味着它不可能被某一个公司所掌控。

比PHP更易懂并且用途更广。Python也用来构建Web站点,但是,它也应用于几乎每个计算机领域,从机器人到电影动画和游戏。

比JavaScript更强大和用途广泛。Python有一个更大的工具集,也并不是牢牢地束缚于Web开发。它也用于科学建模、仪器调试等。

比Ruby更具可读性,并更为人们所接受。Python的语法混乱更少,尤其在较复杂代码中,同时它的OOP对用户和和不太使用OOP的工程中是完全可选的。

比Lua更成熟和受到更广泛关注。Python更加庞大的特性集合和更加扩展的库支持给予其比Lua(一门和Tcl一样的嵌入式“胶水”语言)更加宽广的视野。

比SmallTalk、Lisp和Prolog更不晦涩。Python拥有这类函数式语言的动态品味,但是也拥有开发者和定制系统终端用户都可接受的传统语法。

特别是对不仅仅用于个人扫描文本文件,未来会被人们(包括你在内)读到的程序而言,很多人会发现Python比目前任何可用的脚本或编程语言都划得来。不仅如此,除非你的应用要求最尖端的性能,Python往往是C、C++和Java等系统开发语言的一个不错的替代品:Python代码能够常常实现相同的目标,却会减少很多编写、调试和维护的麻烦。

当然,本文作者从1992年就已经是Python的正式布道者了,所以尽可能接受这些意见吧(其他语言的拥护者的利益可能会受到些损失)。然而,所有这些观点的确代表了投入时间和精力来探索Python的众多开发者的一致看法。

关于作者:Mark Lutz是一位世界级的Python培训讲师。他是Python畅销书籍的作者,同时从1992年起就成为Python社区的引领者,有着30余年的软件开发经验。

本文摘编自《Python学习手册》(原书第5版),经出版方授权发布。

请点击输入图片描述

优点:

Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行

可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能

缺点:

速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。

代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。

线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是 *** 作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由 *** 作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

Python目前主要应用领域:

云计算: 云计算最火的语言, 典型应用OpenStack

WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django

科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas

系统运维: 运维人员必备语言

金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测

图形GUI: PyQT, WxPython,TkInter

Python在一些公司的应用:

谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发

CIA: 美国中情局网站就是用Python开发的

NASA: 美国航天局(NASA)大量使用Python进行数据分析和运算

YouTube:世界上最大的视频网站YouTube就是用Python开发的

Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载

Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发

Facebook:大量的基础库均通过Python实现的

Redhat: 世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的

豆瓣: 公司几乎所有的业务均是通过Python开发的

知乎: 国内最大的问答社区,通过Python开发(国外Quora)

春雨医生:国内知名的在线医疗网站是用Python开发的

除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。

python发展史

1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

Granddaddy of Python web frameworks, Zope 1 was released in 1999

Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础

Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生

Python 2.5 - September 19, 2006

Python 2.6 - October 1, 2008

Python 2.7 - July 3, 2010

In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible

Python 3.0 - December 3, 2008

Python 3.1 - June 27, 2009

Python 3.2 - February 20, 2011

Python 3.3 - September 29, 2012

Python 3.4 - March 16, 2014

Python 3.5 - September 13, 2015

Python 3.6 - December 16,2016

摘自我的博客,禁止所有形式的转载


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7161923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存