Python

PythonPython([KK] 英语发音:/'paɪθɑn/, [DJ] 英语发音:/ˈpaiθən/),是一种面向对象直译式计算机程序设计语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数计算机程序设计语言不一样,它采用缩进来定义语句块。

Python支持命令式编程面向对象程序设计函数式编程面向切面编程泛型编程多种编程范式。与SchemeRubyPerlTcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用。它经常被当作脚本语言用于处理系统管理任务和Web编程,然而它也非常适合完成各种高阶任务。Python虚拟机本身几乎可以在所有的操作系统中运行。使用一些诸如py2exePyPyPyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器执行的程序。

Python的主要参考实现是CPython,它是一个由社区驱动的自由软件。目前由Python软件基金会管理。基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。

发展历史

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。在1989年圣诞节期间的阿姆斯特丹,吉多为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个蒙提·派森的飞行马戏团的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并取得了非常好的效果,完美结合了如CC++Java等其他语言。[1]

就这样,Python在吉多手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。

目前吉多·范罗苏姆仍然是Python的主要开发者,决定整个Python语言的发展方向,Python社区经常称呼他是仁慈的独裁者

Python 2.0于2000年10月16日发布,主要是实现了完整的垃圾回收,并且支持Unicode。同时,整个开发过程更加透明,社区对开发进程的影响逐渐扩大。Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python代码。不过,很多新特性后来也被移植到旧的Python 2.6/2.7版本。

作为编程语言的设计哲学与定位

Python的设计哲学是“优雅”、“明确”、“简单”。因此,Perl语言中“总有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花哨的语法,而选择明确的没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。

Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python程序员倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。目前可用的JIT技术是Psyco

Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强代码的复用性。Python支持重载运算符,因此Python也支持泛型设计。相对于Lisp这种传统的函数式编程语言,Python对函数式编程只提供了有限的支持。有两个标准库(functools, itertools)提供了HaskellStandard ML中久经考验的函数式编程工具。

虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrentGoogle也广泛地使用它。Python的支持者较喜欢称它为一种高阶动态编程语言,原因是“脚本语言”泛指仅作简单编程任务的语言,如shell script、JavaScript等只能处理简单任务的编程语言,并不能与Python相提并论。

Python本身被设计为可扩展的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言C++Cython来编写扩展模块。Python解释器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。Google内部的很多项目使用C++编写性能要求极高的部分,然后用Python调用相应的模块。[来源请求]很多游戏,如 EVE Online 使用Python来处理游戏中繁多的逻辑。

Python的应用场景

Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,TurboGears,web2py,Zope,flask等,可以让程序员轻松地开发和管理复杂的Web程序。

在很多操作系统里,Python是标准的系统组件。大多数Linux发行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端下直接运行Python。有一些Linux发行版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器,Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用操作系统功能的库。通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它Windows API。使用IronPython,Python程序能够直接调用.Net Framework。一般说来,Python编写的系统管理脚本在可读性、性能、代码重用度、扩展性几方面都优于普通的shell脚本。

NumPy,SciPy,Matplotlib可以让Python程序员编写科学计算程序。PyQtPySidewxPythonPyGTK是Python快速开发桌面应用程序的利器。

Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络爬虫。第三方库Twisted支持异步网络编程和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。

很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。

YouTube、Google、Yahoo!、NASA都在内部大量地使用Python。OLPC的操作系统Sugar项目的大多数软件都是使用Python编写。


集成开发环境

适用于Python的集成开发环境(IDE)软件,除了标准二进制发布包所附的IDLE之外,还有许多其他选择。其中有些软件设计有语法着色、语法检查、运行调试、自动补全、智能感知等便利功能。由于Python的跨平台出身,这些软件往往也具备各种操作系统的版本或一定的移植性。

专门为Python设计的IDE软件:

  • Eric:基于PyQt的自由软件,功能强大。支持自动补全、智能感知、自动语法检查、工程管理、svn/cvs集成、自动单元测试等功能。调试功能与Visual Studio和Eclipse类似。目前同时有两个版本。Eric4支持Python2.x,Eric5支持Python3.x。使用前需要先安装相应的PyQt版本。
  • Ulipad:功能较全的免费软件,依赖wxPython;作者是中国Python高手limodou
  • IDLE:Python“标准”IDE。一般随Python而安装,支持较少的编辑功能。调试功能也比较弱。
  • KomodoKomodo Edit:后者是前者的免费精简版
  • PythonWin:包含在pywin32内的编辑器,仅适用于Windows
  • SPE(Stani's Python Editor):功能较多的免费软件,依赖wxPython
  • WingIDE:可能是功能最全的IDE,但不是免费软件

有相应插件的通用IDE/文本编辑器(使用难度往往较大):

  • eclipse + pydev插件
  • NetBeans + 插件
  • emacs + 插件
  • Vim + 插件
  • SlickEdit
  • TextMate
  • Python Tools for Visual Studio

另外,诸如EditPlusUltraEditPSPad等通用的程序员文本编辑器软件也能编辑Python代码,但是否够得上集成开发环境的水平,尚有待评估。

著名应用

  • Pylons--Pylons web framework
  • Zope--应用服务器
  • Plone--内容管理系统
  • Django--鼓励快速开发的web framework
  • TurboGears--另一个Web应用快速开发框架
  • Twisted--Python的网络应用程序框架
  • Python Wikipedia Robot Framework--MediaWiki的机器人编程
  • MoinMoinWiki--Python写成的wiki
  • flask--A Python Microframework

更多介绍:http://zh.wikipedia.org/wiki/Python