Python的优点

Python的优点不少,据很多人说是用了之后就不想再学其他语言的语言,罗列其优点如下: 

1、面向对象 

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

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

OOP 是Python 的一个选择而已,这一点非常重要。不必强迫自己立马成为一个面向对象高手,你同样可以继续深入学习。就像C++ 一样,Python 既支持面向对象编程也支持面向过程编程的模式。如果条件允许的话,其面向对象的工具即刻生效。这对处于预先设计阶段的策略开发模式十分有用。 

2、免费 

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

但请别误会:"免费"并不代表" 无支持"。恰恰相反,Python 的在线社区对用户需求的响应和商业软件一样快。而且,由于Python 完全开放源代码,提高了开发者的实力,并产生了一个很大的专家团队。尽管学习研究或改变一个程序语言的实现并不是对每一个人来说都那么有趣,但是当你知道还有源代码作为最终的帮助和无尽的文档资源是多么的令人欣慰。你不需要去依赖商业厂商。 

Python 的开发是由社区驱动的,是Internet 大范围的协同合作努力的结果。这个团体包括Python 的创始者Guido van Rossum:Python 社区内公认的"终身的慈善独裁者"[Benevolent Dictator for Life (BDFL) ] 。Python 语言的改变必须遵循一套规范的有约束力的程序(称作PEP 流程),并需要经过规范的测试系统和BDFL 进行彻底检查。值得庆幸的是,正是这样使得Python 相对于其他语言可以保守地持续改进。 

3、可移植 

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

Linux 和UNIX 系统。 

微软Windows 和DOS (所有版本)。 

Mac OS (包括OS X 和Classic )。 

BeOS 、OS/2 、VMS 和QNX 。 

实时操作系统,例如,VxWorks 。 

Cray 超级计算机和IBM 大型机。 

运行Palm OS 、PocketPC 和Linux 的PDA 。 

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

游戏终端和iPod 。 

还有更多。 

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

这些意味着Python 程序的核心语言和标准库可以在Linux 、Windows 和其他带有Python 解释器的平台无差别的运行。大多数Python 外围接口都有平台相关的扩展(例如,COM 支持Windows ),但是核心语言和库在任何平台都一样。就像之前我们提到的那样,Python 还包含了一个叫做Tkinter 的Tk GUI 工具包,它可以使Python 程序实现功能完整的无需做任何修改即可在所有主流GUI 平台运行的用户图形界面。 

4、功能强大 

从特性的观点来看,Python 是一个混合体。它丰富的工具集使它介于传统的脚本语言(例如,Tcl 、Scheme 和Perl )和系统语言(例如,C、C++ 和Java) 之间。Python 提供了所有脚本语言的简单和易用性,并且具有在编译语言中才能找到的高级软件工程工具。不像其他脚本语言,这种结合使Python 在长期大型的开发项目中十分有用。下面是一些Python 工具箱中的工具简介。 

动态类型Python 在运行过程中随时跟踪对象的种类,不需要代码中关于复杂的类型和大小的声明。事实上,你将在第6章中看到,Python 中没有类型或变量声明这回事。因为Python 代码不是约束数据的类型,它往往自动地应用了一种广义上的对象。 

自动内存管理Python 自动进行对象分配,当对象不再使用时将自动撤销对象("垃圾回收"),当需要时自动扩展或收缩。Python 能够代替你进行底层的内存管理。 

大型程序支持为了能够建立更大规模的系统,Python 包含了模块、类和异常等工具。这些工具允许你组织系统为组件,使用OOP 重用并定制代码,并以一种优雅的方式处理事件和错误。 

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

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

库工具为了完成更多特定的任务,Python 预置了许多预编码的库工具,从正则表达式匹配到网络都支持。Python 的库工具在很多应用级的操作中发挥作用。 

第三方工具由于 Python 是开放源代码的,它鼓励开发者提供Python 内置工具之外的预编码工具。从网络上,可以找到COM 、图像处理、CORBA ORB 、XML 、数据库等很多免费的支持工具。 

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

5、可混合 

Python 程序可以以多种方式轻易地与其他语言编写的组件"粘接"在一起。例如,Python 的C语言API 可以帮助Python 程序灵活地调用C程序。这意味着可以根据需要给Python 程序添加功能,或者在其他环境系统中使用Python 。例如,将Python 与C或者C++ 写成的库文件混合起来,使Python 成为一个前端语言和定制工具。就像之前我们所提到过的那样,这使Python 成为一个很好的快速原型工具;首先出于开发速度的考虑,系统可以先使用Python 实现,之后转移至C,根据不同时期性能的需要逐步实现系统。 

6、使用简单 

运行Python 程序,只需要简单地键入Python 程序并运行就可以了。不需要其他语言(例如,C或C++ )所必须的编译和链接等中间步骤。Python 可立即执行程序,这形成了一种交互式编程体验和不同情况下快速调整的能力,往往在修改代码后能立即看到程序改变后的效果。 

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

7、Python 是工程,不是艺术 

当Python 于20 世纪90 年代初期出现在软件舞台上时,曾经引发其拥护者和另一个受欢迎脚本语言Perl 的拥护者之间的冲突,但现今已成为经典的争论。我们认为今天这种争论令人厌倦,也没有根据,开发人员都很聪明,可以找到他们自己的结论。然而,这是我在培训课程上时常被问到的问题之一,所以在此对这个话题说几句话,似乎是合适的。 

故事是这样的:你可以用Python 做到一切用Perl 能做到的事,但是,做好之后,还可以阅读自己的程序代码。就是因为这样,两者的领域大部分重叠,但是,Python 更专注于产生可读性的代码。就大多数人而言,Python 强化了可读性,转换为了代码可重用性和可维护性,使得Python 更适合用于不是写一次就丢掉的程序。Perl 程序代码很容易写,但是很难读。由于多数软件在最初的创建后都有较长的生命周期,所以很多人认为Python 是一种更有效的工具。 

这个故事反应出两个语言的设计者的背景,并体现出了人们选择使用Python 的一些主要原因。Python 的创立者所受的是数学家的训练,因此,他创造出来的语言具有高度的统一性,其语法和工具集都相当一致。再者,就像数学一样,其设计也具有正交性(orthogonal ),也就是这门语言大多数组成部分都遵循一小组核心概念。例如,一旦掌握Python 的多态,剩下的就只是细节而已。 

与之相对比,Perl 语言的创立者是语言学家,而其设计反应了这种传统。Perl 中,相同任务有很多方式可以完成,并且语言材料的交互对背景环境敏感,有时还有相当微妙的方式,就像自然语言那样。就像著名的Perl 所说的格言:"完成的方法不止一种。"有了这种设计,Perl 语言及其用户社群在编写代码时,就一直在鼓励表达式的自由化。一个人的Perl 代码可能和另一个人的完全不同。事实上,编写独特、充满技巧性的代码,常常是Perl 用户之间的骄傲来源。 

但是,任何做过任何实质性的代码维护工作的人,应该都可以证实,表达式自由度是很棒的艺术,但是,对工程来说就令人厌恶了。在工程世界中,我们需要最小化功能集和可预测性。在工程世界中,表达式自由度会造成维护的噩梦。不止一位Perl 用户向我们透漏过,太过于自由的结果通常就是程序很容易重头写起,但修改起来就不是那么容易了。 

考虑一下:当人们在作画或雕塑时,他们是为自己做,为了纯粹美学考虑。其他人日后去修改图画或雕像的可能性很低。这是艺术和工程之间关键的差异。当人们在编写软件时,他们不是为自己写。事实上,他们甚至不是专门为计算机写的。而实际上,优秀的程序员知道,代码是为下一个会阅读它而进行维护或重用的人写的。如果那个人无法理解代码,在现实的开发场景中,就毫无用处了。 

这就是很多人认为Python 最有别于Perl 这类描述语言的地方。因为Python 的语法模型几乎会强迫用户编写可读的代码,所以Python 程序会引导他们往完整的软件开发循环流程前进。此外,因为Python 强调了诸如有限互动、统一性、规则性以及一致性这些概念,因此,会更进一步促进代码在首次编写后能够长期使用。 

长期以来,Python 本身专注于代码质量,提高了程序员的生产力,以及程序员的满意度。Python 程序员也变得富有创意,以后就知道,语言本身的确对某些任务提供了多种解决办法。不过,本质上,Python 鼓励优秀的工程的方式,是其他脚本语言通常所不具备的。 

至少,这是许多采用Python 的人之间所具有的共识。当然,你应该要自行判断这类说法,也就是通过了解Python 提供了什么给你。为了帮助你们入门,让我们进行下一章的学习吧。 

8、简单易学 

这一部分引出了本书的重点:相对于其他编程语言,Python 语言的核心是惊人的简单易学。实际上,你可以在几天内(如果你是有经验的程序员,或许只需要几个小时)写出不错的Python 代码。这对于那些想学习语言可以在工作中应用的专业人员来说是一个好消息,同样对于那些使用Python 进行定制或控制系统的终端用户来说也是一个好消息。如今,许多系统依赖于终端用户可以很快地学会Python 以便定制其代码的外围工具,从而提供较少的支持甚至不提供支持。尽管Python 还是有很多高级编程工具,但不论对初学者还是行家高手来说,Python 的核心语言仍是相当简单的。 

名字来源于 Monty Python 

Python 名字的来源这不算是一项技术,但是,这似乎是令人很惊讶、保护得很好的秘密,而我们希望把它全盘托出。尽管Python 世界中都是蟒蛇的图标,但事实是,Python 创立者Guido van Rossum 是以BBC 喜剧Monty Python's Flying Circus 来命名的。他是Monty Python 的大影迷,而很多软件开发人员也是(事实上,这两个领域似乎有种对称)。 

这给 Python 代码的例子加入一种幽默的特质。比如,一般来说,传统常规的变量名为"foo "和"bar ",在Python 的世界中变成了"spam "和"eggs "。而有时出现的"Brian "、"ni "、"shrubbery "等也是这样来的。这种方式甚至很大程度上影响了Python 社区:Python 会议上的演讲往往叫做"The Spanish Inquisition "。 

当然,如果你熟悉这个幽默剧的话,所有这些你都会觉得很有趣,否则就没那么有意思了。你没有必要为了理解引自 Monty Python (也许本书中你就会找到)的例子而刻意去熟悉这一串剧情,但是至少你现在应该知道它们的来源。 

Python官网: http://www.python.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 中的.iml文件和.idea文件夹 ( 隐藏方式 )

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 初次使用IDEA,创建一个maven工程,发现在目录结构中产生了两个不一样的东西:.iml 文件和 .idea 文件夹…

python的优缺点

python的优缺点 优点 简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。 易…

springCloud - 第12篇 - 服务监控 Hystrix 面板

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 前面有用过 Hystrix 熔断,在多服务运行时。可以通过 Hystrix 的监控面板来实时观察各个服务的运行健康、效率和请求量等。 …

专访Google数据科学家彭晨:大数据成为潮流走近各行各业!

摘要:在“2014中美大数据研讨会”开始之前,CSDN采访了谷歌公司数据科学家彭晨,他表示之所以“大数据”火,是因为人类第一次可以精确的、系统的、实时的、全方位的、永久的获取、记录、分析、并保存海量的数据。 端午节后6月6日&a…

解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 场景,springcloud 学习工程中,把 feign 和 ribbon 工程 作为应用服务,纳入 hystrix-turbine 服务…

白领夫妇白手起家 6年赚得两房两车

“让金钱成为你们的奴隶,而不是被金钱奴役着。”金先生谈到他的理财经验时如是说。从大学毕业开始,他通过6年在投资道路上摸爬滚打,靠夫妻两人的双手挣得了全部的家当而没有依靠父母,如今已拥有两房两车和上百万的资产&#xff0c…

解决:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused:

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 场景:启动一个需要注册到 eureka 注册中心的服务 seeParam 报错: com.sun.jersey.api.client.ClientHandle…

springCloud - 第13篇 - 服务监控 集群模式 Hystrix-turbine

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 在springcloud 体系中,可以用 hystrix-dashboard 实时监控服务的运行状态。上一文记录了单实例的监控,现在实…

借钱的境界:开价越低 借成的机会反而越小

一提起借钱,没有几个人不胆战心惊的。有限的几张钞票,好端端地隐居在自己口袋里,忽然一只手伸过来把它带走,真教人一点安全感都没有。借钱的威胁不下于核子战争:后者毕竟不常发生,而且同难者众,…

解决:Error response from daemon: Cannot restart container xxx: driver failed programming external

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 我的情况:个人站点访问不了,重启了阿里云ECS服务器后,发现服务器 80端口不通,于是重启…

专访许鹏:谈C程序员修养及大型项目源码阅读与学习

摘要:阅读源码是开源项目最好的学习方式,然而真正的执行起来却并不容易。这里我们为大家分享许鹏的源码阅读经验、C程序员的修养以及Spark和Storm源码走读博文。 对许鹏的第一印象来源于其Bolg的粗读,最早时候更准确说应该是博文的粗略统计—…

解决:mysql 连接报错 Authentication plugin ‘caching_sha2_password‘cannot be loaded

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 Navicat连接linux上的mysql时报如下错误: 错误原因: 即从mysql5.7版本之后,默认采用了caching_sha2_…

酒店房间和 C++ 局部变量的作用域

本文由 伯乐在线 - 菜鸟浮出水 翻译自 StackOverflow。欢迎加入 技术翻译小组。转载请参见文章末尾处的要求。问题:Can a local variable’s memory be accessed outside its scope? 有一段局部变量的内存,可以从其范围之外访问它么? 如下…

解决:Access denied for user ‘root’@‘localhost’(using password: YES)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 我报这个错的原因很简单:数据库连接时密码输入错误。把密码确认对了,就连接成功了。

【历史回顾】Linux发展一览

我们周围到处都有Linux的身影,在家中、公司里、大学、实验室,太空空间站。现在的Linux已经从一个个人爱好发展成了一场计算机革命。在这篇文章里,我们向你展示最完整的Linux 23年来发展的历史年表。我们周围到处都有Linux的身影,在…

专访联想谢政维:功耗和价格是天蝎项目最大障碍!

摘要:与国外OpenStack和OCP(开放计算项目)频频见诸报端不同,中国的天蝎计划看起来神神秘秘,今天专访联想谢政维,他帮我们解密了目前天蝎项目的一些基本情况,以及他对未来天蝎发展的观点。 服务…

解决:Chrome 插件安装时提示 程序包无效:“CRX_HEADER_INVALID“

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 今天在添加谷歌插件的时候,却发现谷歌浏览器显示 程序包无效:"CRX_HEADER_INVALID",现整理…

65种GPU性能测试,AMD开源驱动领先!

摘要:近日,Phoronix测试了65 种不同的GPU使用开源驱动的OpenGL性能,测试的GPU型号包括Intel HD Graphics、AMD Radeon、AMD FirePro和NVIDIA GeForce系列。结果显示,相比之下,AMD开源驱动领先于NVIDIA。 【编者按】20…

1分钟看懂:java 项目中 VO 、DTO、Entity,各自是在什么情况下应用的

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1、entity 里的每一个字段,与数据库相对应, 2、vo 里的每一个字段,是和你前台 html 页面相对应&…

指尖上的艺术——如何运用代码发挥无限创意

摘要:计算机为我们的生活带来了不计其数的变化,现在,我们不妨也把它与艺术结合起来,去从机器的角度来为生活增添活力与色彩,开拓一个无限可能的艺术创作新境界。 写在前面 生成的艺术,指尖上的艺术&#…