[编辑] 发展历史
Python的创始人为Guido van Rossum。在1989年圣诞节期间的阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中 Python(大蟒蛇的意思)作为程序的名字,是因为他是一个Monty Python的飞行马戏团的爱好者。
ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言 并没有成功,究其原因,Guido 认为是非开放造成的。Guido 决心在 Python 中避免这一错误(的确如此,Python 与其它的语言如C、C++和Java结合的非常好)。同时,他还想实现在 ABC 中闪现过但未曾实现的东西。
就这样,Python在Guido手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
[编辑] 作为编程语言的设计定位
虽然 Python 可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如 Zope、Mnet 及 BitTorrent,Google 也广泛地使用它。 Python 的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单编程任务的语言,如 shell script、JavaScript 等只能处理简单任务的编程语言,并不能与 Python 相提并论。
此外,由于 Python 对于 C 和其他语言的良好支持,很多人还把 Python 作为一种“胶水语言”(glue language)使用。 使用 Python 将其他语言编写的程序进行集成和封装。 在 Google 内部的很多项目使用 C++ 编写性能要求极高的部分,然后用Python调用相应的模块。
[编辑] Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
#!/usr/bin/env python
print "Hello, world!"
-
-
Python 3000:
#!/usr/bin/env python
print("Hello, world!")
Python 也可以单步直译运行。运行 Python 解释器进入交互式命令行的环境,你可以在提示符号 >>> 旁输入 print "Hello, world!",按 Enter 键输出结果:
>>> print "Hello, world!"
Hello, world!
-
-
Python 3000:
>>> print("Hello, world!")
Hello, world!
[编辑] 语言特色
Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器,我们用的比较多的是C版本的Python,也就是使用C语言实现的Python解释器,除此之外还有使用Java实现的Jython和使用.NET实现的IronPython,这些实现可以使Python用户充分利用己有的Java及.NET资源。
同时,Python支持几乎所有常用的操作系统,包括:Windows/DOS、Macintosh、Linux 及 FreeBSD。 及很多不常用的操作系统,包括AIX、AS/400 (OS/400)、BeOS、OS/2、OS/390与z/OS、Palm OS、PlayStation与PSP、Psion、QNX、RISC OS、Series 60、Sparc Solaris、VMS、VxWorks、Windows CE或Pocket PC、Sharp Zaurus、MorphOS等。
可扩充性可说是Python作为一种编程语言的特色。新的内置模块(module)可以用C 或 C++写成。而我们也可为现成的模块加上Python的界面。Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。
因此Python具有非常庞大的程序库,通过它们可以快速完成绝大部分常用的任务,如:从某个URL中获取信息、正则表达式、获得某个文件或字符串的MD5特征字符串、多线程、XML及HTML的分析等。
Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Python资深开发者Tim Peters所作的Python格言(The Zen of Python)[1]里面表述为:
There should be one-- and preferably only one --obvious way to do it.
另外,在 Chris DiBona(Google 开源码网站负责人)和 Leo Laporte(Twit 网站创始人) 的访谈中,Guido van Rossum 也提出一个口号[2]:
There is only one way to do it.(做一件事情只有一个方法。)
有意思的是,这正好和Perl 语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It.)完全相反,这似乎是人们常把Perl和Python互相比较的重要原因。
著名Python培训专家Mark Lutz则表示,Peters的话中最值得一提的是[3]:
Explicit is better than implicit.(明言胜于暗示。)
这句话在Python用户社群中通常简写作EIBTI(Explicit Is Better Than Implicit.)。Lutz认为这一特色性原则是Python和其他各种编程语言之间最重要的区别。
Python语言是一种清晰的语言的另一个意思是,它的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。这样有意的强制程序员养成良好的编程习惯。其中很重要的一项就是Python的缩进规则。
例如 if 语句:
if age < 21:
print "You cannot buy wine!\n"
print "But you can buy chewing gum.\n"
print "this is outside if\n"
一个和其他大多数语言(如C语言)的区别就是,一个语句块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语 言是用一对花括号{ }来明确的定出语句块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来, 曾经被认为是一种程序设计语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确 实使得程序更加清晰和美观。
另外Python在其他部分的设计上也坚持了清晰划一的风格,这使得Python称为一门易读性、易维护性好,并且被大量用户所欢迎的、用途广泛的语言。
[编辑] Python 3.0
Python 的 3.0 版本,在开发阶段被称为 Python 3000,或简称 Py3k[4]。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候就没有考虑向下兼容。许多针对早期 Python 版本设计的程序都无法在 Python 3.0 上正常运行。为了照顾现有程序,Python 2.6 作为一个过渡版本,基本使用了 Python 2.x 的语法和库,同时考虑了向 Python 3.0 的迁移。基于早期 Python 版本而能正常运行于 Python 2.6 并无警告的程序可以通过一个 2 to 3 的转换工具无缝迁移到 Python 3.0[5]。
[编辑] 主要变化
Python 3.0 的变化主要在以下几个方面[6]:
-
部分函数和语句的改变
[7]:
最引人注意的改变是 print 语句没有了,取而代之的是 print 函数;
-
字符串和字节:
类似 Java,str
类表示一个 Unicode 字符串,代替了早期版本的 unicode
类。而一堆字节则用类似 b"abc"
的语法创建,用 bytes
类表示;
-
其他变化:
详见参考文献[6]。
[编辑] 各种实现
- CPython(Classic Python,也就是原始的经典 Python 实现,需要区别于其他实现的时候才以 CPython 称呼;或解作 C 语言实现的 Python)
- Jython(原名 JPython;Java 语言实现的 Python,现已正式发布)
- PyPy(使用 Python 语言写的 Python)
- IronPython(面向 .NET 和 ECMA CLI 的 Python 实现)
- 周蟒(支持繁简中文的 Python 语言)
[编辑] 集成开发环境
适用于 Python 的集成开发环境(IDE)软件,除了标准二进制发布包所附的 IDLE 之外,还有许多其他选择。其中有些软件设计有语法着色、语法检查、运行调试、自动补全、智能感知等便利功能。由于 Python 的跨平台出身,这些软件往往也具备各种操作系统的版本或一定的移植性。
专门为 Python 设计的IDE软件:
- IDLE:Python“标准”IDE
- Komodo 和 Komodo Edit:后者是前者的免费精简版
- PythonWin:ActivePython软件包的 IDE,仅适用于 Windows
- SPE(Stani's Python Editor):功能较多的自由软件,依赖 wxPython
- Ulipad:功能较全的自由软件,依赖 wxPython;作者是中国 Python 高手 limodou
- WingIDE:可能是功能最全的 IDE,但不是自由软件
- Eric:基于PyQt的自由软件,功能强大
有相应插件的通用IDE软件(使用难度往往较大):
- eclipse + pydev插件:稳定性欠佳
- emacs + 插件
- Vim + 插件
- Visual Studio .NET 2003 + VisualPython:仅适用Windows,已停止维护,功能较差
- SlickEdit
- TextMate
另外,诸如 EditPlus、UltraEdit、PSPad 等通用的程序员文本编辑器软件也能对 Python 代码文本作出一定解释,但是否够得上集成开发环境的水平,尚有待评估。
[编辑] 著名应用
- Zope--应用服务器
- Plone--内容管理系统
- Django--鼓励快速开发的 web framework
- Twisted--Python 的网络应用程序框架
- TurboGears--另一个Web应用快速开发框架
- Python Wikipedia Robot Framework--MediaWiki 的机器人编程
- MoinMoinWiki--Python 写成的 wiki
[编辑] 从◇◇◇语言到 Python
[编辑] 外部链接
- Python.org--Python 的官方网站
- 台湾 Python 技术论坛
- POT--PyTUG:Python 台湾用户组群
- PyTUG:一般讨论区/邮件列表
- 政大应数《数理信息》讨论版--Python 讨论区
- Planet@Taiwan:Python 中文星球
- 玩 Python 组群
- Python 中文社区
- Python 技术论坛
- 周蟒--中文 Python 语言
- 中蟒--基于 Python 的中文编程语言
- 啄木鸟 Pythonic 开源社区
- 易记学 Python 中文教学
- 计算机做什么事--利用 Python 提供给编程语言完全初学者的教学系列文章
- 简明 Python 教程(A Byte of Python)/繁体中文版/英文版官网
- 在线体验 Python(Google App Engine 版)/在线体验 Python