介绍
2 n0 C) C4 `5 F) n
6 i4 ^+ }/ _( B4 a* H简介
: t, U. k: w( e1 V$ ?. Y# U& }% o2 k5 ]
Python 语言是少有的一种可以称得上即简单又功能强大的编程语言。你将惊喜地发现 Python 语言是多么地简单,它注重的是如何解决问题而不是编程语言的语法和结构。
7 a( \, J5 Q I$ f; ~. R$ Q" }3 H/ ~2 W* p" ~' q" y0 _
Python 的官方介绍是:
% E8 N- w5 W' j% P, H9 t% q) j: Q( R. q
! J( x6 L+ b. u9 kPython 是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。0 B' ` `" {% [
$ P' G1 J! Q4 t( Z
我会在下一节里详细地讨论 Python 的这些特点。
( f; K6 x( ]& G" `" S; c- `* h; X# W" S' h1 B* f! [
注释0 S: u% C4 E* t2 @+ B+ e
Python 语言的创造者 Guido van Rossum 是根据英国广播公司的节目“蟒蛇飞行马戏”命名这个语言的,并非他本人特别喜欢蛇缠起它们的长身躯碾死动物觅食。
9 t( U5 t6 D+ N
4 f( z& n( N& h% T- qPython 的特色
4 W' [; y! ~6 x6 y& y3 z. L
- x' n" m: `6 [' O' B0 V% G/ E简单$ O7 i# p( @2 z( U$ [8 C
Python 是一种代表简单主义思想的语言。阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。( E' T* ?: G7 Z& ]
$ a& l: F9 m5 d$ {" v
易学
1 i; v0 [: [" _! o- u3 W4 `. U, X就如同你即将看到的一样,Python 极其容易上手。前面已经提到了,Python 有极其简单的语法。
9 z2 u' \% D$ `6 |5 s" @$ Z5 V8 k- ]; D$ F0 K: u5 O( s
免费、开源
0 ]- y' a4 j' @. WPython 是 FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS 是基于一个团体分享知识的概念。这是为什么 Python 如此优秀的原因之一——它是由一群希望看到一个更加优秀的 Python 的人创造并经常改进着的。
, `8 K: q4 x3 t& D" y$ _' X
) F) d& t" e9 s' s( _# n高层语言
4 I! ^# o/ B: u( H' [9 S# K* }当你用 Python 语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
& z" K+ W7 }4 i) F1 ^ b; [% ^% u1 t- h
可移植性' T8 Z, X6 S J! u+ ]9 Z& I y
由于它的开源本质,Python 已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有 Python 程序无需修改就可以在下述任何平台上面运行。
8 g: F) d. H1 r! i3 U2 P6 {% Y" H: X4 k
这些平台包括 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!1 r/ {. a. P# N" j
8 P% ^. d% h1 Q8 b# B; x1 {' }解释性
$ e+ Z' s& c7 H/ C2 f这一点需要一些解释。& j' Z1 K9 h( ?" [& y* f
- _: U, W( i6 p一个用编译性语言比如 C 或 C++写的程序可以从源文件(即 C 或 C++语言)转换到一个你的计算机使用的语言(二进制代码,即 0 和 1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。. L9 F: j; }% ]# J
6 {. ]% n- Q/ O' q) } i
而 Python 语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用 Python 更加简单。由于你只需要把你的 Python 程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的 Python 程序更加易于移植。
0 r1 A! N R1 C4 A5 T4 U
6 R0 d. i: @7 |9 v9 q面向对象: u3 V5 ? Y2 n1 H( q: b: {$ i2 i
Python 即支持面向过程的编程也支持面向对象的编程。在 面向过程 的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在 面向对象 的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如 C++和 Java 相比,Python 以一种非常强大又简单的方式实现面向对象编程。( Z. q* @: ?1 s# x3 h
: A9 l- G) e2 c6 T6 D可扩展性
5 d5 n7 o( V8 `+ Q8 A如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用 C 或 C++编写,然后在你的 Python 程序中使用它们。' f# `( s* x+ p* I9 z% g7 K
" s) Q. [! J( D0 ]& L+ r- Y可嵌入性
/ j: _% Q0 _. r' x' M0 Z你可以把 Python 嵌入你的 C/C++程序,从而向你的程序用户提供脚本功能。( F6 N; p" V. C/ o
$ N" {( |* m5 \. ?& p) O! Q
丰富的库
2 m6 T( P- L3 a4 Q vPython 标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面)、Tk 和其他与系统有关的操作。记住,只要安装了 Python,所有这些功能都是可用的。这被称作 Python 的“功能齐全”理念。
% w2 G; n9 \ E X1 u2 U" @7 A: ~6 l0 V
除了标准库以外,还有许多其他高质量的库,如 wxPython、Twisted 和 Python 图像库等等。
9 _; Y) i( M9 T V3 E" G7 S3 j7 r# f d0 ]2 w+ u8 J" l
概括' f* S( \3 c9 k0 c
( e$ V' `& K( I
Python 确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。2 v. c$ s% y( d2 |7 s! y
- O, [) x& n- d5 S为什么不使用 Perl?; R3 d+ K h; Z$ m' H
/ J% k; d& Y3 \2 e9 v! k
也许你以前并不知道,Perl 是另外一种极其流行的开源解释性编程语言。
2 ]9 V* }( U- |8 v3 T+ u& v7 S
0 [# E7 F( u+ W& O+ b" f7 s. j如果你曾经尝试过用 Perl 语言编写一个大程序,你一定会自己回答这个问题。在规模较小的时候,Perl 程序是简单的。它可以胜任于小型的应用程序和脚本,“使工作完成”。然而,当你想开始写一些大一点的程序的时候,Perl 程序就变得不实用了。我是通过为 Yahoo 编写大型 Perl 程序的经验得出这样的总结的!
0 ^9 M O2 V* b- N8 s7 D+ W( R5 U' i" x+ M8 ^1 N
与 Perl 相比,Python 程序一定会更简单、更清晰、更易于编写,从而也更加易懂、易维护。我确实也很喜欢 Perl,用它来做一些日常的各种事情。不过当我要写一个程序的时候,我总是想到使用 Python,这对我来说已经成了十分自然的事。Perl 已经经历了多次大的修正和改变,遗憾的是,即将发布的 Perl 6 似乎仍然没有在这个方面做什么改进。6 u9 d1 e& C! c6 i6 l6 S5 }; P
( \$ A; `) A1 q( D! G/ h1 h' m
我感到 Perl 唯一也是十分重要的优势是它庞大的 CPAN 库——综合 Perl 存档网络。就如同这个名字所指的意思一样,这是一个巨大的 Perl 模块集,它大得让人难以置信——你几乎用这些模块在计算机上做任何事情。Perl 的模块比 Python 多的原因之一是 Perl 拥有更加悠久的历史。或许我会在 comp.lang.python 上建议把 Perl 模块移植到 Python 上的计划。6 H- h* s7 E$ i! B( P! l
, T3 k# A1 o, I! r8 j" o
另外,新的 Parrot 虚拟机按设计可以运行完全重新设计的 Perl 6 也可以运行 Python 和其他解释性语言如 Ruby、PHP 和 Tcl 等等。这意味着你将来 或许 可以在 Python 上使用所有 Perl 的模块。这将成为两全其美的事——强大的 CPAN 库与强大的 Python 语言结合在一起。我们将拭目以待。
. U5 @) j7 n) ^3 u" |* {5 N9 ]- q7 U# N2 j3 [) x
程序员的话
7 s s5 ~) V! n' K; D U- R2 i
2 T" Y8 s- z7 u) c5 ^$ u读一下像 ESR 这样的超级电脑高手谈 Python 的话,你会感到十分有意思:
7 A% r& s- P/ F( c0 `6 b- X: C0 y$ {/ e8 {# D' m% N' t' }' p( b' @* L4 N) i
Eric S. Raymond 是《The Cathedral and the Bazaar》的作者、“开放源码”一词的提出人。他说 Python 已经成为了他最喜爱的编程语言。这篇文章也是促使我第一次接触 Python 的真正原动力。
8 K7 n8 X- M9 l1 q5 K) p& A- F9 l. Q/ O7 P( w6 |
Bruce Eckel 著名的《Thinking in Java》和《Thinking in C++》的作者。他说没有一种语言比得上 Python 使他的工作效率如此之高。同时他说 Python 可能是唯一一种旨在帮助程序员把事情弄得更加简单的语言。请阅读完整的采访以获得更详细的内容。5 P9 L. f6 a: |% w9 O
; q9 r1 Z( X& `: T
Peter Norvig 是著名的 Lisp 语言书籍的作者和 Google 公司的搜索质量主任(感谢 Guido van Rossum 告诉我这一点)。他说 Python 始终是 Google 的主要部分。事实上你看一下 Google 招聘的网页就可以验证这一点。在那个网页上,Python 知识是对软件工程师的一个必需要求。 T/ N% V4 s( {) ]; K3 o+ H
: U2 o) J: b5 M5 K
Bruce Perens 是 OpenSource.org 和 UserLinux 项目的一位共同创始人。UserLinux 旨在创造一个可以被多家发行商支持标准的 Linux 发行版。Python 击败了其它竞争对手如 Perl 和 Ruby 成为 UserLinux 支持的主要编程语言。
9 Q* r% t( j6 ]- t
) `$ j0 X, ~* y7 Z& w% R |