Python是Guido van Rossum在20世纪90年代研发的一种现代编程语言(以一个著名的喜剧团体命名)。尽管Python并不能完美地适用于所有应用程序的开发,但它的优势使其成为许多情况下的理想选择。
熟悉传统语言的程序员会发现,Python很容易学习。包含了所有熟悉的结构,如循环、条件语句、数组等,但在Python中很多都更易于使用。原因有以下几点。
Python非常适合应用程序的快速开发。用Python编写应用程序的时间可能只有用C或Java的五分之一,并且代码行数只有等效C程序的五分之一,这种情况并不少见。当然,这要视具体的应用场景而定。对于那种大部分是在 for 循环中执行整数运算的数值算法,Python提升的生产力会少得多。对于普通的应用来说,生产力收益可能会比较可观。
Python是一种极具表现力的编程语言。这里的“表现力”是指:同样是一行代码,Python可以完成的操作比其他大多数语言都要多。表现力较强的语言,优势十分明显,需要编写的代码越少,项目完成的速度就越快。代码越少,程序就越容易维护和调试。
为了体会一下Python的表现力是如何简化代码的,请考虑交换两个变量 var1 和 var2 的值。在类似Java的语言中,这需要3行代码和1个额外的变量:
int temp = var1; var1 = var2; var2 = temp;
在将 var2 的值赋给 var1 时,需要先用变量 temp 暂存 var1 的值,然后再把该暂存值赋给 var2 。这个过程并不是很复杂,但是阅读这3行代码并理解这是为了完成数值交换,是要花些工夫的,即便是有经验的程序员也一样。
相比之下,Python允许在一行代码中完成相同的交换操作,并且从交换方式就能明显看出交换确实发生了:
var2, var1 = var1, var2
当然这只是一个很简单的例子,但类似的优点在Python中俯仰皆是。
Python的另一个优点是可读性好。也许读者会认为,编程语言只要能被计算机读懂就可以了,但其实人类同样得能读懂。要阅读代码的人,可能是调试人员(很可能就是写程序的人),可能是维护人员(仍然可能是写程序的人),也可能是任何将来修改代码的人。凡此种种,总之代码越容易阅读和理解越好。
代码越容易理解,就越易于调试、维护和修改。Python在这方面的主要优势就是利用缩进。与大多数语言不同,Python 坚持 要求代码块必须整体缩进。尽管这会让有些人感到奇怪,但好处就是代码总是能以一种非常易懂的风格进行格式化。
以下是两小段程序,一个用Perl编写,另一个用Python编写。两者的操作相同,参数都是两个相同大小的数值列表,返回对其两两求和后的列表。我认为Python代码的可读性比Perl代码更好,看起来更干净,难以理解的符号更少:
# Perl版 sub pairwise_sum { my($arg1, $arg2) = @_; my @result; for(0..$#$arg1) { push(@result, $arg1->[$_] + $arg2->[$_]); } return(\@result); } # Python版 def pairwise_sum(list1, list2): result = [] for i in range(len(list1)): result.append(list1[i] + list2[i]) return result
上面两段代码完成的工作相同,但Python代码胜在了可读性上。当然,Perl还能有其他的实现方式,其中有一些确实会比以上代码简洁得多,但我认为也更加晦涩难懂。
Python的另一个优势是“功能齐备”(batteries included)理念,因其自带了很多函数库。基本思路就是,安装Python后就应该万事俱备,不需要再安装其他库就能真正开始工作了。这就是为什么Python的标准库自带了电子邮件、网页、数据库、操作系统调用、GUI开发等处理模块。
例如,只需要写两行代码,就可以用Python编写一个Web服务器,用于共享某个目录中的文件。
import http.server http.server.test(HandlerClass=http.server.SimpleHTTPRequestHandler)
无须再安装用于网络连接和HTTP的库,Python都已内置好了,开箱即用。
Python还是一种优秀的跨平台语言,可以在很多平台上运行,包括Windows、Mac、Linux、UNIX等。因为它是解释型语言,相同代码可以在任何装有Python解释器的平台上运行,而目前几乎所有平台都具备了Python的解释器。Python甚至还有在Java(Jython)和.NET(IronPython)中运行的版本,为运行Python提供了更多可能的平台。
Python还是免费的。自始至终,Python就是以开源的方式研发的,并且可以免费获取。任一版本的Python都可自行下载和安装,并可用于开发商业或个人应用,分文不收。
虽然世人的态度在慢慢转变,但由于担心缺乏技术支持,担心缺少付费客户的影响力,有些人仍然对免费软件持怀疑态度。但是Python已经被许多大牌公司用于实现关键业务,谷歌、Rackspace、Industrial Light&Magic和Honeywell只是其中的几个例子。这些公司和许多其他公司都很清楚,Python是一个非常稳定、可靠且支持良好的产品,拥有一个活跃的、博识的用户社区。即便提出高难度的Python问题,也能在Python互联网新闻组中迅速获得答案,速度会比大多数技术支持电话快得多,而且无须付费、保证正确。
不仅Python是免费的,它的源代码也可以免费使用,可随意进行修改、完善和扩展。因为源代码是免费提供的,所以可供所有人查看并修改。其他那些带有版权的软件,鲜有能以合理的费用进行这种修改的。
如果是第一次接触开源软件,大家应该要了解,不仅可以自由使用和修改Python,还能够(也鼓励)为其做出贡献并对其进行改进。根据自身的条件、兴趣和技能,可以给出财务上的贡献,例如捐赠给Python软件基金会(Python Software Foundation,PSF)。也可以参加特殊兴趣小组(Special Interest Group,SIG),对Python内核或某个辅助模块的发行版进行测试并给出反馈。还可以向社区贡献一些自己或公司开发的东西。当然贡献的大小完全是自行决定的,但只要有能力就一定要考虑去做点什么。这里正在创造巨大的价值,有机会就来添砖加瓦吧。
Python满足了很多期许,表现力强大、可读性好、内置库丰富、跨平台,而且还是开源的。难道真的就完美无缺了吗?