1前言
Python是一个容易学习又功能强大的程序语言。它含有高效率的高阶数据结
构,也是一个简单但是有效果的对象导向程序语言(object-oriented
programming)。Python优雅的语法及动态型态识别(dynamic typing),
加上直译式(intepretion)的本质,使得它成为一个在多种功能多种平台上
撰写脚本(scripts)及快速开发的理想语言。
各种主要平台的Python直译器(interpreter)及延伸的标准链接库
(library)都可以在Python的网站(www.python)上免
费下载及自由流传(包含原始码及二元执行档(binary form))。在该网站上
也有许多的档案及连结,包括了免费、第三者开发的Python模块、程序及工具,
以及许多的附带文件。
Python的直译器也可以很容易的延伸,可以加入新的由C或是C++(或其它可以
由C呼叫的程序语言)所写的函数或是数据型态。Python也很适合用来当作其
它应用程序的延伸语言(译者言:比如说用Python来延伸CAD,DBMaker等的
功能)。
本教学文件将非正式的介绍给读者Python语言及系统的基本观念及特性。如果
读者手边有一个Python的直译器将有助于获得实际的知识,但是本文件的解释
都很充足,所以如果单纯离线阅读也是可以的。
若对于标准的对象及模块有兴趣的话,请参阅Python Library
Reference。若是要知道正式Python语言的标准定义的话,可参考Python
Reference Manual。若有兴趣用C或C++写延伸的功能的话,请参考
Extending and Embedding the Python Interpreter以及Python/C
API Reference。市面上也有许多更深入探讨Python的书籍。
本教学文件并不试图完整的介绍每一个Python的特性,甚至也不试图介绍每一
个常用的功能。相反的,本文件介绍许多Python值得认识的功能,并且让读
者对这个语言的大致风貌有一个了解。在读完此书之后,读者应该可以开始读
及写Python的模块及程序,并且应该可以开始学习各种在Python Library
Reference所介绍的模块了。
2开胃菜
如果你曾经写过大型的shell script,你大概能了解那种感觉:你想要新增
加一个功能,但是这个script已经实在有够大够慢够复杂的了,或者说,你想
要加入的新功能需要呼叫系统功能或是其它函数,但是这些功能/函数只有C才
能呼叫。你要解决的问题好像并没有严重到要重新用C来写整个程序,或者有些
问题因为要用到可变长度的字符串或是特别的数据结构(像是用排序过的文件
名称组成序列(list)),用C来写实在比shell麻烦的太多,又或者是你根本
不是对C很熟。
另外一个情境是这样的:也许你要使用好几个C的链接库,但是标准开发C程序七言
的过程(写/编译/测试/重新编译)实在太花时间,你需要能快速的开发好软件。
又或者你已经些好一个应用程序,这个程序可以使用一个延伸的语言来控制。
你不想创造一种语言,然后还得写好这个语言的编译器,还得把这个编译器跟
你的程序放在一起。
在这些情况之下,Python也许正是你所需要的语言。Python虽然简单,却是
不折不扣的程序语言。对大型的程序来说,它比起shell能提供更多的结构性
及支持。另外一方面,它也提供了比C语言更多的错误检查。由于Python是一
美女头像真实
个非常高阶的语言,所以它有许多内建的数据型态像是有弹性的数组及字典
(dictionary)等等,如果用C来做的话得花上你大半天的时间。正是因为
关于科技的图片
Python有较为一般性的数据型态,Python可以应用的范围比起awk甚或是
Perl要广的很多,最起码,Python跟这些语言一样容易开发。
Python的另外一个特点就是可以将程序切成小模块,然后这些模块还可以应用
在其它的程序之中。Python本身也有一个相当大的标准模块库可以让你来使
用,或者当作学习Python程序设计的范例。在Python中也有内建的模块可以
提供许多功能,诸如:档案I/O、系统呼叫、sockets,甚至是与Tk之类的GUI
工具互动的接口。
Python是一个直译式的语言,可以省掉你在开发程序时不少编译及连结程序的
时间。这个Python的直译器甚至可以交互式的使用,让你在写一些小程序来试
验Python语言的特性,或是测试程序时可以写节省不少时间。你还可以用
Python直译器来当作计算器呢。
Python让你可以写出非常精练及可读性高的程序。用Python写出的程序通常
比用C或C++写的程序要短得多,其理由如下:
♦因为其高阶的数据型态,使得你可以用很简单的叙述(statement)就能够表达复杂的运作过程
♦Python使用缩排来代替C/C++中常见的前后括号{}
♦Python不需要变量或是参数的宣告
Python是延伸性高的语言。如果你知道如何写C语言的程序的话,你很容易
就可以在Python的直译器中加入新的内建函数(function)或是模块,这样做
的好处是你可以让程序中关键的部分速度调到最快,或者是连结Python到初冬钓鲫鱼
binary的链接库(例如是厂商做好的图形链接库)去。一但你真的需要,你也
可以把Python直译器加入到你用C写的应用程序里面去,然后Python就变成
你的应用程序的延伸或是商业化的语言了。
另外一提的是,这个程序的命名由来是源自于BBC著名的节目``Monty
Python's Flying Circus'',跟其它恶心的爬虫类没有任何关系。如果你
的文件中要提到Monty Python的话,不但照准,而且还相当鼓励。
2.1然后呢
现在你应该对Python感到有一些兴趣了吧,接下来你将看到比较多的的细节讨
论。学习语言的最好途径是使用之,赶快动手吧。
在下一章我们将讨论到如何使用Python的直译器,虽然相当的普通,但是如果
你要尝试一下之后的范例的话,这是重要的基础。
本教学文件的其余部分将用许多的例子介绍Python语言的各种不同的特性,先
从简单的表示式(expressions)开始,将会谈到叙述(statements)及数据
型态,然后是函式(functions)及模块(module),最后会谈到较高深的观念
像是例外情形(exceptions)及使用者自订的类别(ur-defined
class)等等。
3使用Python的直译器
3.1如何启动直译器
在Unix之类的操作系统上,如果有安装的话,Python直译器通常安装在
/usr/local/bin/python这个目录中。你可能需要先在Shell中设定寻找/usr/local/bin目录,这样你才可以在Shell中打入以下的指令来启动Python直译器糖醋丸子的做法
python
你的Python直译器安装的位置是可以在安装时设定的,因此也有可能安装在其它的地方。你也许需要问你周遭的Python大师或是系统管理员才能知道正确的安装位置(/usr/local/python是另外一个普遍的
可能安装所在)。
要离开Python直译器的话,打入EOF的字符(在Unix上是Control-D,在
DOS及Windows上是Control-Z就会使得直译器离开(zero exit status)。如果行不通的话,你可以打入以下指令离开直译器:"import sys; it()".
小鞋匠
Python直译器使用每行编辑,应该不难使用。在Unix上,也许安装Python 直译器的人有安装使用GNU readline链接库的功能,这样的话你会有交互式编辑以及编辑过去数据的功能。最简单的检查你有没有这项功能的方法就是在Python的提示之下打入Control-P,如果有哔声的话,就表示你有这项功能,你可以翻到附录A去看特殊键的用法。如果你没有听到哔声,或是只出现P 的话,就表示你没有这项功能,你得使用退格键(backspace)来清除目前所在行的字符了。
Python直译器的操作方法根Unix shell很像:当被呼叫时所连结的标准输入是tty device(终端机)的话,直译器会互动的读及执行所输入的指令。当被呼叫时加入文件名称参数或所连结的标准输入是连到档案的话,直译器就会读入并执行该档所含有的script。
第三种启动直译器的方法是打入以下的指令"python-c command
[arg]...",这个指令会执行command所代表的叙述(这跟shell的-c option很像),因为Python叙述(state
ment)常有空白及特殊字符,所以用此法时可以把command所代表的叙述用””括起来,以免跟shell的其它特
殊字符或是参数有所混淆。
孤山寺端上人房写望要注意的是"python file"指令跟"python<file"指令是有所区分的。对后者而言,不单单只有执行这个script,而且程序中有关输入的需求(例如呼叫input()或是raw_input())也都会由这个file来满足。由于此
file已经在程序执行之初已经被从头到尾读过一次,所以一执行这个程序将会短童话故事
马上就碰到了EOF。相反的对于前一个写法来说,程序的输入需求是由任何连
结到Python直译器的标准输入(standard input)的装置或档案来满足的,
而这个也许才是你所想要的结果。
当script档案在使用的时候,也许你会想要执行这个script然后还可以之后
继续进入互动的模式。这时你可以加入-i这个选项。但是如同前一段所说的,
如果此script是由标准输入来读进去的话就没有办法这样做了。
3.1.1参数的传递
如果interpreter认识sys的话(译:可用“import sys”指令),script
的文件名及附加传入的参数都会被纪录在sys.argv这个变量并并传给
script来使用。sys.argv是一列的字符串,长度至少为1,如果你什么都档
案或参数都没传的话,sys.argv[0]就是一个空字符串。如果script的名
字是'-'(就是标准输入的意思)的话,sys.argv[0]就会被设为'-'。
当使用-c command的话,sys.argv[0]就被设定为'-c'所有的在-c
command之后的option(例如–i)都会被当成sys.argv而被command
所处理,所以就不是当作option一样的来看待了。
3.1.2互动模式
当指令是由tty终端机来传入时,我们称之为互动模式(interactive
mode)。在此模式之下会出现主要的命令提示符号(primary prompt)来提
示输入下一个指令,这个primary prompt通常是">>>"。如果是指令是
延续上一行的话就会出现condary prompt符号,这个condary
prompt就通常是"..."。一进入python的互动模式的话直译器会出现一
个欢迎信息,以及版本编号辑版权说明,接下来就是第一个prompt。如下所示:python
Python1.5.2b2(#1,Feb281999,00:02:06)[GCC2.8.1]
on sunos5
Copyright1991-1995Stichting Mathematisch Centrum,
Amsterdam
>>>