Python

维基百科,自由的百科全书

跳转到: 导航, 搜索

跳过字词转换说明

Python
Python-logo.svg
多泛型
发行时间
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([KK] 英語發音:/'paɪθɑn/, [DJ] 英語發音:/ˈpaiθən/),是一种面向对象直譯式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。

这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。

目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。

目录

[编辑] 发展历史

Python的创始人为Guido van Rossum。在1989年圣诞节期间的阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个Monty Python的飛行馬戲團的爱好者。

ABC是由Guido参加设计的一种教学语言。就Guido本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,Guido认为是非开放造成的。Guido决心在Python中避免这一错误(的确如此,Python与其它的语言如CC++Java结合的非常好)。同时,他还想实现在ABC中闪现过但未曾实现的东西。

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

[编辑] 作为編程語言的设计定位

虽然Python可能被粗略地分類為「脚本语言」(script language),但實際上一些大規模軟件開發計劃例如Zope、Mnet及BitTorrentGoogle也廣泛地使用它。Python的支持者較喜歡稱它為一種高階動態編程語言,原因是「脚本语言」泛指僅作簡單編程任務的語言,如shell script、JavaScript等只能處理簡單任務的編程語言,並不能與Python相提並論。

此外,由于Python对于C和其他语言的良好支持,很多人还把Python作为一种「胶水语言」(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目使用C++编写性能要求极高的部分,然后用Python调用相应的模块。

[编辑] 标准库

Python之所以有这么大的魅力,原因之一就是它有一个强大的标准库[1]。可以使你之前写的工具能适应于许多其他的任务,标准库可以由用户自定义扩充,如用C或Python写的库。借助于拥有基于标准库的大量工具、能够使用低级语言如C和可以作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。 由于支持多种标准格式和协议如MIMEHTTP,Python非常适于编写面向网络的应用,如:用户图形模块、连接到关系数据库、任意精度的科学计算、正则表达式的支持和进行单元测试[2]

[编辑] Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:

#!/usr/bin/env python
print "Hello, world!"
#!/usr/bin/env python
print("Hello, world!")

Python也可以單步直譯執行。執行Python直譯器進入互動式命令列的環境,你可以在提示符號>>>旁輸入print "Hello, world!",按Enter鍵輸出結果:

>>> print "Hello, world!"
Hello, world!
>>> print("Hello, world!")
Hello, world!

[编辑] 语言特色

Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器,我们用的比较多的是C版本的Python,也就是使用C语言实现的Python解释器,除此之外还有使用Java实现的Jython和使用.NET实现的IronPython,这些实现可以使Python用户充分利用己有的Java.NET资源。

同时,Python支持几乎所有常用的操作系统,包括:WindowsDOSMacintoshLinuxFreeBSD。及很多不常用的操作系统,包括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特征字符串、多线程XMLHTML的分析等。

Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Python资深开发者Tim Peters所作的Python格言(The Zen of Python)[3]裡面表述为:

There should be one-- and preferably only one --obvious way to do it.

另外,在Chris DiBona(Google開源碼網站負責人)和Leo Laporte(Twit網站創始人) 的訪談中,Guido van Rossum也提出一個口號[4]

There is only one way to do it.(做一件事情只有一个方法。)

有意思的是,这正好和Perl語言(另一种功能类似的高级动态语言)的中心思想TMTOWTDIThere's More Than One Way To Do It.)完全相反,这似乎是人们常把Perl和Python互相比较的重要原因。

著名Python培训专家Mark Lutz则表示,Peters的话中最值得一提的是[5]

Explicit is better than implicit.(明言胜于暗示。)

这句话在Python用户社群中通常简写作EIBTIExplicit 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[6]。相对于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[7]

[编辑] 主要变化

Python 3.0的变化主要在以下几个方面[8]

部分函数和语句的改变[9]

最引人注意的改变是print语句没有了,取而代之的是print函数;

字符串和字节:

类似Javastr类表示一个Unicode字符串,代替了早期版本的unicode类。而一堆字节则用类似b"abc"的语法创建,用bytes类表示;

其他变化:

详见參考文獻[8]

[编辑] 各种实现

  • CPythonClassic Python,也就是原始的经典Python实现,需要区别于其他实现的时候才以CPython称呼;或解作C 语言实现的Python
  • Jython(原名JPythonJava语言实现的Python,现已正式发布)
  • PyPy(使用Python语言寫的Python)
  • IronPython(面向.NETECMA CLI的Python实现)
  • 周蟒(支持繁簡中文的Python语言)

[编辑] 集成开发环境

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

专门为Python设计的IDE软件:

有相应插件的通用IDE软件(使用难度往往较大):

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

[编辑] 著名应用

[编辑] 從其它語言到Python

[编辑] 外部链接

[编辑] Python 3000相關連結

[编辑] 参考文献

  1. ^ Przemyslaw Piotrowski, Build a Rapid Web Development Environment for Python Server Pages and Oracle, Oracle Technology Network, July 2006. Accessed October 21, 2008.
  2. ^ PEP 327 - Decimal Data TypePython.org.於2008年11月24日查閱.
  3. ^ 打开任何较近的Python标准发行版的交互式解释器,在>>>提示符后输入import this(导入this模块)并执行,即可看到The Zen of Python全文。
  4. ^ 【聽譯大師說話】Python創始人訪談錄2:Python的起源、特点和未來。
  5. ^ Mark Lutz. Programming Python[M]. 3rd Edition. O'Reilly Media, Inc., 2006:第23页. ISBN 978-0-596-00925-0
  6. ^ (英文)Python Software Foundation(2008年8月20日).Python 3.0b3 Release.於2008年8月30日查閱.
  7. ^ (英文)Python Software Foundation.Conversion tool for Python 2.x code: 2to3.於2008年8月30日查閱.
  8. ^ 8.0 8.1 (英文)Guido van Rossum.What’s New in Python 3.0—Python v3.0b3 documentationPython Software Foundation.於2008年8月30日查閱.
  9. ^ (英文)Guido van Rossum.What’s New in Python 3.0—Python v3.0b3 documentation: Common Stumbling BlocksPython Software Foundation.於2008年8月30日查閱.



Original-Page: Python - 维基百科,自由的百科全书
 Web-Blaster V2.21 Close Webblaster Floater
The page now displayed was connected to the database of the Assoziations-Blaster (Deutsche Version) through filtering it with the Web-Blaster.

The whole process takes place in real time and no data from other servers is saved anywhere.

In order to see this page without the filter and loaded from its original server, the Webblaster must be turned off.

Turn Off Webblaster