Python /pi:'thon/ 用作者的话说, Python是另一个脚本语言,另一个Perl。 Python的设计崇尚简洁和优雅,它主要吸引那些觉得Perl 丑陋怪异的程序员。Python \Py"thon\, n. Python是卧在特尔斐阿波罗神殿的毒蛇的名字。Python一种大型蟒蛇。
Python是一种解释型、交互式、面向对象的通用编程语言,它的标识是一条可爱的大蟒蛇。我们经常拿它和Tcl、Perl、Scheme、Java 比较:Python有非常清晰的语法,先进的面向对象设计,拥有模块、类、异常处理、动态执行和高级数据类型。强大的标准库涵盖了字串处理(正则表达式)、网络协议(HTTP, FTP, SMTP,XML-RPC, POP, IMAP)、软件工程(敏捷开发,单元测试,logging)、操作系统接口(系统调用,文件系统,数据库)的方方面面。此外它还拥有大量的第三方扩展库和庞大活跃的社群支持,比如图形库PIL,跨平台GUI框架wxPython,应用服务器Zope,网络框twisted,3D支持PyOpenGL。简单,强大,开放和免费,就是使用Python最好的理由。Guido van Rossum 是Python语言的作者。据称Guido 因喜爱英国BBC每周滑稽剧Monty Python'sFlying Circus 而命名Python。象Linux 和Delphi这类单词的发音总是另人迷惑,Python社区称Python为派森[音],称Guido为奎多[音]的占了大多数。要知道Guido怎么念自己的名字,不妨到他主页里查找注音,还会有
一个搞怪的音频guido.au。(Guido 在英文发念/gwee'do/,在荷兰语中念 /khwee'do/)上世纪80年代,Guido在荷兰阿姆斯特丹为CWI工作时,曾实现过一个教学语言ABC。ABC不容易扩展,但也有很多吸引人的特性。Guido总结了ABC失败的经验,从1989年十二月开始开发Python,并吸收了C、Modula-3、Bourne shell 和Icon等语言的很多优点,到1991 年二月,Python 0.9.0 第一次正式发布在USENET。Gudio 的主页上面题有:笨拙并以此为荣(Gawkyand proud of it)。他推崇开放和自由,喜欢印有YouNeed Python的文化衫和PYTHON的车牌,主张Computer Programming for Everybody,让Python为我们开心地工作。Gudio过去一直对语言的变革态度保守,因而被社区称为“仁慈的□□□□者BDFL”(BenevolentDictator For Life)。1995年Guido一家迁居美国后开始为Zope公司工作。Guido带着他忠实的团队来到Zope.com,这是当时Python社区非常关注的一件大事,大家都希望Guido的×××能给未来的Zope 3 这个重量级应用服务器注入新的
活力。后来看到,Guido为了赚钱供他的孩子将来上大学,最后还是不得已告别了他共事8年心爱的Python-Labs团队,离开了加州的Zope,前往西海岸的ElementalSecurity从事企业级安全研究。听起来真是令人沮丧。在自由的世界里振臂一呼应者云集的英雄Guido,在现实
生活中居然算不上是有钱人!Gudio和他的Python在2002年赢得自由软件基金会年度大奖。Python的繁荣主要归功于开放自由的社区力量。开发小组成员利用邮件列表python-dev和新闻组comp.lang.python沟通交流,用SourceForge 完成代码管理、版本控制、特性跟踪、Bugs修复、提交补丁。SourceForge 的tracker列表里总是排满了最新提交的项目计划。由Guido本人和Bruce Eckel主持的PyCon2004 是面向Python社区的开发者盛会。PyCon2004议题涉及Web开发、数学和科学计算、Pyrex、Zope、GUI、3D、面向对象、Twisted网络框架、分布式应用。值得注意得
是Andrew Koenig这位C++社区的重量级人物出席并作了非常有趣的演讲。Python被设计为和C密切整合的胶水语言。常常用C为Python编写功能模块、底层接口和增强性能,利用Python完成逻辑抽象和原型开发。C也可以将Python嵌入执行(调用虚拟机解释执行)。C++库Boost.Python可以完成C++到Python类型的映射。Python简洁的语法,高级的数据类型,自动内存管理,健壮的虚拟机和丰富的标准库可以极大地提高生产力。体验一下Python使用弱类型带来的好处:
def sum(arg1, arg2):
return arg1 + arg2
print sum(42, 47.8)
print sum('spam', 'eggs')
完成相同功能又具有灵活性的Java/C++代码实际上是不容易写的。C++使用模板就轻松搞定了么?C/C++ 体制里面隐藏的类型转换实在令人担忧。(C++View创刊号专门讨论过用C++如何求两数之和,BruceEckel给过一个Java实现。)Python语言特别强调简洁,优雅,自然的风格。锯齿型的代码缩进,简短的代码,清晰统一的语法规则。解释和交互执行,可以节约程序员编码和调试的时间。可
以象Java一样编译成字节码来提高执行速度。针对Python执行效率的优化产生很多方案。当然,首先要确认Python已经足够快。我们经常会发现执行 Python 应用程序所花费的时间绝大部分只是花在了几个函数上。将这些关键部分重写成 C 扩展模块,可以使用像 SWIG这样的扩展封装器扩展,将程序中最耗时元素作为C代码执行。已经创建了一种叫Pyrex 的语言,它融合了Python 和 C。一旦用 C 编译器进行了编译,就可以将这些Pyrex语言模块导入常规的 Python 应用程序并使用。与直接用C编写扩展相比,Pyrex允许在同一代码中更无缝地混合C级别的变量和Python级别的变量对象。扩展模块Psyco还可以插入Python解释器的内部,让它运行得更快。Python语言非常接近人类的自然语言。Python源程序被称作可执行的伪代码,具有极高的可读性。许多特性帮助你降低了产生错误的可能性。你相信这是一段python程序吗:
member and folder is not object and object.
displayContentsTab()
脚本语言通常有轻便灵活的特点。Python是平台兼容,高度可移植的,可以运行在许多Unix 变体,Mac,MS-DOS,Windows,嵌入式等平台。Python 2.0增加了对Unicode支持。Python社区还为你提供了最佳的工具和商业应用的秘密武器。win32all 作为Python在Win32 平台上的扩展,可
以很方便调用Win32 API和COM对象。用VB.NET可以做到的,通过win32all一样可以方便的实现。.NET 平台的Common Language Runtime(CLR)可以运行多种语言。Python for .NET可以与.NET框架互操作。譬如,如果Python类是公用的,Visual Basic程序员便能够继承它。JPython(Jython)是CPython(Python)语言的100%纯Java实现,可以运行在任何支持 JVM 的平台
上;它结合了Python及Java虚拟机和库的优点,并作为Java平台的方便补充,可以完全利用 JRE提供的所有类和API。Jython非常容易学习和使用,它的生产力在于结合了脚本语言Python的易用性与Java平台的健壮性。同Java一样Jython程序可以编译成Java字节码,增强了Java的字符串和文本支持功能使它成为Java程序最理想的嵌入脚本语言。J P y t h o n 函数设计(Functional programming)也为Java提供了强大和灵活的编程样式,共享了Python特有的动态特性,甚至可
以在运行时改变基类。现在可以得到的稳定版本是Jython 1.1。Python 2.3.4 (May 27, 2004)是最新的生产版本。活跃的Python一直在不断的进化之中。我们总是可以在Python中发现和体验当今最热门的新技术:未来的Python 3.0可能因为PyPy(implementingPython in Python)而引起语法上的激进变化。甚至有可能加入JIT(Just-In-Time, 运行时编译执行的技术,Java语言即采用该技术)编译支持。Guido 在个人的Blog里,提出敏捷编程Python化(Pythonic Agile Programming)。Python的某些特征专门适合敏捷开发(单元测试框架unittest,文档字串pydoc以及它支持的 inspect都是标准库的一部分)。Python已经集成在大多数Linux发行版中。RedHat
使用Python制作安装程序Anaconda(蟒蛇)。Gentoo的emerge 和portage 使用Python构建完整的系统。所有运行Mac OS X的Apple计算机的基本安装都包括Python。HP和Compaq的很多机器使用Python进行服务管Zope应用服务器是Python构建复杂系统的最佳实例。Plone内容管理系统是Zope应用最广泛的产品。Zope和Plone方案成了O'Reilly Open Source Conference2004
的明星。BitTorrent使得Python更加出名和流行。BT完美地应用了Python相关的多种解决方案:设计优雅、跨平台的语言和标准网络库的强力支持,wxPython跨平台的GUI,用py2exe绑定虚拟机并编译为可执行程序发布。RealNetworks的开源项目Helix 播放器(RealOne)用Python构建应用系统。