Python
维基百科,自由的百科全书
| Python | |
|---|---|
| 多泛型 | |
|
面市時間
|
1991年 |
|
設計者
|
Guido van Rossum |
|
實作者
|
Python Software Foundation |
| Strong, dynamic ("duck") | |
|
主要實作產品
|
Python(即CPyhton), Jython, IronPython, PyPy |
|
衍生副語言
|
Stackless Python |
|
啟發語言
|
ABC, C語言, Haskell, Icon, Java, Lisp, Modula-3, Perl, Smalltalk, Tcl |
|
影響語言
|
Ruby, Boo, Groovy |
| 跨平台 | |
| Python Software Foundation License | |
| www.Python.org | |
Python,是一种面向对象、直譯式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。
这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。
目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。
目录 |
[编辑] 发展历史
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
[编辑] Python 3000 相關連結
- 專訪 Guido van Rossum:迎接 Python 3000
- Guido 談 Python 3000 及與 Ruby 的競爭
- Python 3000 FAQ(中文)
- What's New in Python 3.0
[编辑] 参考文献
- ^ 打开任何较近的Python标准发行版的交互式解释器,在>>>提示符后输入import this(导入this模块)并执行,即可看到The Zen of Python全文。
- ^ 【聽譯大師說話】Python 創始人訪談錄2:Python 的起源、特点和未來。
- ^ Mark Lutz. Programming Python[M]. 3rd Edition. O'Reilly Media, Inc., 2006: 第23页. ISBN 9780596009250
- ^ (英文)Python Software Foundation(2008年8月20日).Python 3.0b3 Release.於2008年8月30日查閱.
- ^ (英文)Python Software Foundation.Conversion tool for Python 2.x code: 2to3.於2008年8月30日查閱.
- ^ 6.0 6.1 (英文)Guido van Rossum.What’s New in Python 3.0 — Python v3.0b3 documentation.Python Software Foundation.於2008年8月30日查閱.
- ^ (英文)Guido van Rossum.What’s New in Python 3.0 — Python v3.0b3 documentation: Common Stumbling Blocks.Python Software Foundation.於2008年8月30日查閱.

