含有章节索引的中文 文章模板
::-- hoxide [2005-06-10 04:13:31]
Contents
1. Python一般介绍
Python(发音:[ 'paiθ(ə)n; (US) 'paiθɔn ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。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的习惯。
1.1. Python有哪些特点?
可扩充性可说是Python作为一种编程语言的特色。新的内置模块(module)可以用C 或 C++写成。而我们也可为现成的模块加上Python的接口。Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。
Python也被称为是一门清晰的语言。因为它的作者在设计它的时候,总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:
There should be one-- and preferably only one --obvious way to do it.
有意思的是,这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。这似乎是人们常把Perl和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直接编写的程序段有时运行效率甚至高于用C编写的程序。
1.2. Python和perl比有哪些优缺点?
语言的问题,见仁见智,基本上属于信仰,无法强求一致。
就语法来看,Python比Perl优美得多。Perl里面充满了像$!和$_这类的天书标记,初学的时候每读一段代码,就会碰到几个从来没见过的标记,然后过两个星期,他们又以全新的面目出现在我面前。在我看来,这决不是什么紧凑,只是疯狂。不过同样的尼采,有的人看到的是伟大的哲学家,有的人看到的只是一个疯子。
类库,Python的类库不如Perl的多。但是这很大程度上是因为Python没有一个像CPAN这样的类库集散地。其实Python的类库也是很全的,只是要找。SourceForge是一个,此外还有freshmeat。就我自己的经验,有些类库是无意中找到的。比方说,我看IBM的 developer network,看到一个twisted,安装的时候读了它的README,发现还有pycrypto,和pyopenssl类库。
如果你觉得Python的开发效率还不及C++,那只能说你对Python还是太不熟悉,不过有C++的底子,用不了多久你就会闯过这一关的。其实 Python的文本处理能力一点都不比Perl逊色。它的re模块的思路同java的regex很像,而中文处理则要用到codecs。真正学懂之后,你会觉得Python模块的逻辑性很强。不像Perl,虽然很方便,但是一个一个模块之间没有什么必然的联系。
关于Python的大型项目,最知名的就是Zope,然后有twisted(它既是一个类库,也是一个framework)。此外还有 gadfly,medusa(其实这两个是Zope的子项目,但是Perl没有这个重量级的产品吧),以及Chandler。这些都是纯Python的程序。
1.3. 为什么选择Python?
- 语言就是工具,选择语言就是选择工具。下面列举一些Python的优点,从中我们就能看出为什么要选择Python或是Python是否合适你及你的工作。
1、简单易学
- Python是一种代表简单主义思想的语言。Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。Python有极其简单的语法,极易上手。
2、解释性
- Python语言写的程序不需要编译成二进制代码。可以直接从源代码运行程序,但是需要解释器。这点类似于Java,或是Matlab。其实我更偏重于认为是后者。
3、面向对象
- Python即支持面向过程的编程也支持面向对象的编程。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。让我很迷惑的是,Python中类的属性似乎不是那么重要,至少我现在还不是很明白。
4、高级语言
- 使用Python语言编写程序,无需考虑诸如管理内存一类的底层细节。
5、可扩展性及可嵌入性
- 可以把部分程序用C或C++编写,然后在Python程序中使用它们。与此相反,可以把Python嵌入C/C++程序,提供脚本功能。
6、免费、开源
- 自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。现阶段,我们好像不太在意这一点。
7、可移植性
由于它的开源本质,Python已经被移植在许多平台上。如果能小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。包括Linux、Windows、 FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC!这是趋势,也是现状。
8、丰富的库
- 丰富的库,似乎已成为判断一门编程语言是否强大的重要标准。Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库(似乎可以称为第三方),如wxPython、Twisted和Python图像库等等。
1.4. Python名字的由来
1.5. Python的许可证模式是怎样的?
1.6. Python发行版有哪些?
1.7. 如何获得Python发行版
2. Python项目
2.1. Python 著名的国外项目有哪些?
2.2. Python 著名的国内项目有哪些?
3. Python组织
3.1. Python的国外组织有哪些?
3.2. Python的国内组织有哪些?
4. Python开发
4.1. 如何与Python核心开发团队取得联系?
4.2. 如何加入Python核心开发团队?
4.3. 如何阅读Python源代码?
4.4. 如何加入Python库开发团队?
4.5. 如何加入国内Python项目开发团队?