python的优点
1.3.1 高级
伴随着每一代编程语言的产生,我们会达到一个新的高度。汇编语言是上帝献给那些挣扎
在机器代码中的人的礼物,后来有了FORTRAN、 C 和 Pascal 语言,它们将计算提升到了崭新
的高度,并且开创了软件开发行业。伴随着C 语言诞生了更多的像C++、Java 这样的现代编译
语言。我们没有止步于此,于是有了强大的、可以进行系统调用的解释型脚本语言,例如Tcl、
Perl 和Python。
这些语言都有高级的数据结构,这样就减少了以前“框架”开发需要的时间。像Python 中
的列表(大小可变的数组)和字典(哈希表)就是内建于语言本身的。在核心语言中提供这些
重要的构建单元,可以鼓励人们使用它们,缩短开发时间与代码量,产生出可读性更好的代码。
在 C 语言中,对于混杂数组(Python 中的列表)和哈希表(Python 中的字典)还没有相
应的标准库,所以它们经常被重复实现,并被复制到每个新项目中去。这个过程混乱而且容易
产生错误。C++使用标准模版库改进了这种情况,但是标准模版库是很难与Python 内建的列表
和字典的简洁和易读相提并论的。
1.3.2 面向对象
建议:面向对象编程为数据和逻辑相分离的结构化和过程化编程添加了新的活力。面向对
象 编程支持将特定的行为、特性以及和/或功能与它们要处理或所代表的数据结合在一起。
Python 的面向对象的特性是与生俱来的。然而,Python 绝不想Java 或Ruby 仅仅是一门面向对
象语言,事实上它融汇了多种编程风格。例如,它甚至借鉴了一些像Lisp 和Haskell 这样的函
数语言的特性。
1.3.3 可升级
大家常常将Python 与批处理或Unix 系统下的shell 相提并论。简单的shell 脚本可以用
来处理简单的任务,就算它们可以在长度上(无限度的)增长,但是功能总会有所穷尽。Shell
脚本的代码重用度很低,因此,你只能止步于小项目。实际上,即使一些小项目也可能导致脚
本又臭又长。Python 却不是这样,你可以不断地在各个项目中完善你的代码,添加额外的新的
或者现存的Python 元素,也可以重用您脑海中的代码。Python 提倡简洁的代码设计、高级的
数据结构和模块化的组件,这些特点可以让你在提升项目的范围和规模的同时,确保灵活性、
一致性并缩短必要的调试时间。
“可升级”这个术语最经常用于衡量硬件的负载,通常指为系统添加了新的硬件后带来
的性能提升。我们乐于在这里对这个引述概念加以区分,我们试图用“可升级”来传达一种观
念,这就是:Python 提供了基本的开发模块,你可以在它上面开发你的软件,而且当这些需要
扩展和增长时,Python 的可插入性和模块化架构则能使你的项目生机盎然和易于管理。
1.3.4 可扩展
就算你的项目中有大量的Python 代码,你也依旧可以有条不紊地通过将其分离为多个文件
或模块加以组织管理。而且你可以从一个模块中选取代码,而从另一个模块中读取属性。更棒
的是,对于所有模块,Python 的访问语法都是相同的。不管这个模块是Python 标准库中的还
是你一分钟之前创造的,哪怕是你用其他语言写的扩展都没问题!借助这些特点,你会感觉自
己根据需要“扩展”了这门语言,而且你已经这么做了。
代码中的瓶颈,可能是在性能分析中总排在前面的那些热门或者一些特别强调性能的地方,
可以作为 Python 扩展用 C 重写。 。需要重申的是,这些接口和纯Python 模块的接口是一模
一样的,乃至代码和对象的访问方法也是如出一辙的。唯一不同的是,这些代码为性能带来了
显著的提升。自然,这全部取决你的应用程序以及它对资源的需求情况。很多时候,使用编译
型代码重写程序的瓶颈部分绝对是益处多多的,因为它能明显提升整体性能。
程序设计语言中的这种可扩展性使得工程师能够灵活附加或定制工具,缩短开发周期。虽
然像 C、C++乃至 Java 等主流第三代语言(3GL)都拥有该特性,但是这么容易地使用 C 编写
扩展确实是 Python 的优势。此外,还有像 PyRex 这样的工具,允许 C 和 Python 混合编程,
使编写扩展更加轻而易举,因为它会把所有的代码都转换成 C 语言代码。
因为 Python 的标准实现是使用 C 语言完成的(也就是 CPython),所以要使用 C 和 C++
编写 Python 扩展。Python 的 Java 实现被称作 Jython,要使用 Java 编写其扩展。最后,
还有 IronPython,这是针对 .NET 或 Mono 平台的 C# 实现。你可以使用 C# 或者 VB.Net 扩
展 IronPython。
1.3.5 可移植性
在各种不同的系统上可以看到Python 的身影,这是由于在今天的计算机领域,Python 取
得了持续快速的成长。因为Python 是用C 写的,又由于C 的可移植性,使得Python 可以运行
在任何带有ANSI C 编译器的平台上。尽管有一些针对不同平台开发的特有模块,但是在任何一
个平台上用Python 开发的通用软件都可以稍事修改或者原封不动的在其他平台上运行。这种
可移植性既适用于不同的架构,也适用于不同的操作系统。
1.3.6 易学
Python 关键字少、结构简单、语法清晰。这样就使得学习者可以在相对更短的时间内轻松
上手。对初学者而言,可能感觉比较新鲜的东西可能就是Python 的面向对象特点了。那些还未
能全部精通OOP(Object Oriented Programming, 面向对象的程序设计)的人对径直使用Python
还是有所顾忌的,但是OOP 并非必须或者强制的。入门也是很简单的,你可以先稍加涉猎,等
到有所准备之后才开始使用。
1.3.7 易读
Python 与其他语言显著的差异是,它没有其他语言通常用来访问变量、定义代码块和进行
模式匹配的命令式符号。通常这些符号包括:美元符号($)、分号(;)、波浪号(~)等等。
没有这些分神的家伙,Python 代码变得更加定义清晰和易于阅读。让很多程序员沮丧(或者欣
慰)的是,不像其他语言,Python 没有给你多少机会使你能够写出晦涩难懂的代码,而是让其
他人很快就能理解你写的代码,反之亦然。如前所述,一门语言的可读性让它更易于学习。我
们甚至敢冒昧的声称,即使对那些之前连一行 Python 代码都没看过的人来说,那些代码也是
相当容易理解的。看看下一章节——“起步”中的例子,然后告诉我们你的进展是多么神速。
1.3.8 易维护
源代码维护是软件开发生命周期的组成部分。只要不被其他软件取代或者被放弃使用,你
的软件通常会保持继续的再开发。这通常可比一个程序员在一家公司的在职时间要长得多了。
Python 项目的成功很大程度上要归功于其源代码的易于维护,当然这也要视代码长度和复杂度
而定。然而,得出这个结论并不难,因为Python 本身就是易于学习和阅读的。Python 另外一
个激动人心的优势就是,当你在阅读自己六个月之前写的脚本程序的时候,不会把自己搞得一
头雾水,也不需要借助参考手册才能读懂自己的软件。
1.3.9 健壮性
没有什么能够比允许程序员在错误发生的时候根据出错条件提供处理机制更有效的了。针
对错误,Python 提供了“安全合理”的退出机制,让程序员能掌控局面。一旦你的Python 由
于错误崩溃,解释程序就会转出一个“堆栈跟踪”,那里面有可用到的全部信息,包括你程序
崩溃的原因以及是那段代码(文件名、行数、行数调用等等)出错了。这些错误被称为异常。
如果在运行时发生这样的错误,Python 使你能够监控这些错误并进行处理。
这些异常处理可以采取相应的措施,例如解决问题、重定向程序流、执行清除或维护步骤、
正常关闭应用程序、亦或干脆忽略掉。无论如何,这都可以有效的缩减开发周期中的调试环节。
Python 的健壮性对软件设计师和用户而言都是大有助益的。一旦某些错误处理不当,Python 也
还能提供一些信息,作为某个错误结果而产生的堆栈追踪不仅可以描述错误的类型和位置,还
能指出代码所在模块。
1.3.10 高效的快速原型开发工具
我们之前已经提到了Python 是多么的易学易读。但是,你或许要问了,BASIC 也是如此啊,
Python 有什么出类拔萃的呢?与那些封闭僵化的语言不同,Python 有许多面向其他系统的接口,
它的功能足够强大,本身也足够强壮,所以完全可以使用 Python 开发整个系统的原型。显然,
传统的编译型语言也能实现同样的系统建模,但是Python 工程方面的简洁性让我们可以在同样
的时间内游刃有余的完成相同的工作。此外,大家已经为Python 开发了为数众多的扩展库,所
以无论你打算开发什么样的应用程序,都可能找到先行的前辈。你所要做的全部事情,就是来
个“即插即用”(当然,也要自行配置一番)!只要你能想得出来,Python 模块和包就能帮你
实现。Python 标准库是很完备的,如果你在其中找不到所需,那么第三方模块或包就会为你完
成工作提供可能。
来自 《Python核心编程》第二版
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术