Python

File:Python-logo.svg | |
编程范型 | 多泛型 |
---|---|
設計者 | 吉多·范罗苏姆 |
實作者 | Python Software Foundation |
发行时间 | 1991年 |
当前版本 | |
型態系統 | Strong, dynamic ("duck") |
操作系统 | 跨平台 |
許可證 | Python Software Foundation License |
網站 | www.Python.org |
主要實作產品 | |
Python(即CPython), Jython、IronPython、PyPy | |
衍生副語言 | |
Stackless Python | |
受影响于 | |
ABC、C語言、Haskell、Icon、Java、Lisp、Modula-3、Perl、Smalltalk、Tcl | |
影響語言 | |
Ruby、Boo、Groovy |
Python([KK] Template:IPA-en, [DJ] Template:IPA-en),是一种面向对象、直譯式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。
这种语言具有非常简捷而清晰的语法特点,适合完成各种高階任务,几乎可以在所有的操作系统中运行。
目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多。
发展历史
Python的创始人为吉多·范罗苏姆。在1989年圣诞节期间的阿姆斯特丹,吉多为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个蒙提·派森的飛行馬戲團的爱好者。
ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误(的确如此,Python与其它的语言如C、C++和Java结合的非常好)。同时,他还想实现在ABC中闪现过但未曾实现的东西。
就这样,Python在吉多手中诞生了。实际上,第一个实现是在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调用相应的模块。
标准库
Python之所以有这么大的魅力,原因之一就是它有一个强大的标准库[3]。可以使你之前写的工具能适应于许多其他的任务,标准库可以由用户自定义扩充,如用C或Python写的库。借助于拥有基于标准库的大量工具、能够使用低级语言如C和可以作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。
由于支持多种标准格式和协议如MIME和HTTP,Python非常适于编写面向网络的应用,如:用户图形模块、连接到关系数据库、任意精度的科学计算、正则表达式的支持和进行单元测试[4]。
Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:
#!/usr/bin/env python
print "Hello, world!"
- Python 3.x(也称为Python 3000):
#!/usr/bin/env python
print("Hello, world!")
Python也可以單步直譯執行。執行Python直譯器進入互動式命令列的環境,你可以在提示符號>>>旁輸入print "Hello, world!",按Enter鍵輸出結果:
>>> print "Hello, world!"
Hello, world!
- Python 3.x(也称为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)[5]裡面表述为:
There should be one-- and preferably only one --obvious way to do it.
另外,在Chris DiBona(Google開源碼網站負責人)和Leo Laporte(Twit網站創始人) 的訪談中,Guido van Rossum也提出一個口號[6]:
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的话中最值得一提的是[7]:
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!"
print "But you can buy chewing gum."
print "this is outside if"
一个和其他大多数语言(如C語言)的区别就是,一个语句块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{ }来明确的定出语句块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序设计语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。
另外Python在其他部分的设计上也坚持了清晰划一的风格,这使得Python称为一门易读性、易维护性好,并且被大量用户所欢迎的、用途广泛的语言。
Python 3.0
Python的3.0版本,在开发阶段被称为Python 3000,或简称Py3k[8]。相对于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[9]。
主要变化
Python 3.0的变化主要在以下几个方面[10]:
- 部分函数和语句的改变[11]:
最引人注意的改变是print语句没有了,取而代之的是print函数;
- 字符串和字节:
类似Java,str
类表示一个Unicode字符串,代替了早期版本的unicode
类。而一堆字节则用类似b"abc"
的语法创建,用bytes
类表示;
- 其他变化:
详见參考文獻[10]。
各种实现
- 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代码文本作出一定解释,但是否够得上集成开发环境的水平,尚有待评估。
著名应用
- Pylons--Pylons web framework
- 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
- web.py:一个非常简约而强大的web开发框架
- Python中文资料收集网站
Python 3000相關連結
- 專訪Guido van Rossum:迎接Python 3000
- Guido談Python 3000及與Ruby的競爭
- Python 3000 FAQ(中文)
- What's New in Python 3.0
- Python 3 學習筆記
参考文献
- ^ Python 3.14.0 beta 2 is here!. 2025年5月26日 [2025年5月27日] (英語).
- ^ "Python Insider: Python 3.13.4, 3.12.11, 3.11.13, 3.10.18 and 3.9.23 are now available"; 作者姓名字符串: Thomas Wouters; 出版日期: 2025年6月3日; 检索日期: 2025年6月5日.
- ^ Przemyslaw Piotrowski, Build a Rapid Web Development Environment for Python Server Pages and Oracle, Oracle Technology Network, July 2006. Accessed October 21, 2008.
- ^ PEP 327 - Decimal Data Type. Python.org. [2008-11-24].
- ^ 打开任何较近的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 978-0-596-00925-0
- ^ Python Software Foundation. Python 3.0b3 Release. 2008/8/20 [2008/8/30] (英语).
- ^ Python Software Foundation. Conversion tool for Python 2.x code: 2to3. [2008/8/30] (英语).
- ^ 10.0 10.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] (英语).