资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1 前言Python是一个容易学习又功能强大的程序语言。它含有高效率的高阶数据结构,也是一个简单但是有效果的对象导向程序语言(object-oriented programming)。Python优雅的语法及动态型态识别(dynamic typing),加上直译式(intepretion)的本质,使得它成为一个在多种功能多种平台上撰写脚本(scripts)及快速开发的理想语言。 各种主要平台的Python直译器(interpreter)及延伸的标准链接库(library)都可以在 Python的网站( http:/www.python.org )上免费下载及自由流传(包含原始码及二元执行档(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+写的程序要短得多,其理由如下: w 因为其高阶的数据型态,使得你可以用很简单的叙述(statement)就能够表达复杂的运作过程 w Python使用缩排来代替C/C+中常见的前后括号 w Python不需要变量或是参数的宣告 Python 是延伸性高的语言。如果你知道如何写C语言的程序的话,你很容易就可以在Python的直译器中加入新的内建函数(function)或是模块,这样做的好处是你可以让程序中关键的部分速度调到最快,或者是连结Python到binary的链接库(例如是厂商做好的图形链接库)去。一但你真的需要,你也可以把Python直译器加入到你用C写的应用程序里面去,然后Python就变成你的应用程序的延伸或是商业化的语言了。 另外一提的是,这个程序的命名由来是源自于BBC著名的节目Monty Pythons Flying Circus,跟其它恶心的爬虫类没有任何关系。如果你的文件中要提到Monty Python的话,不但照准,而且还相当鼓励。 2.1 然后呢 现在你应该对Python感到有一些兴趣了吧,接下来你将看到比较多的的细节讨论。学习语言的最好途径是使用之,赶快动手吧。 在下一章我们将讨论到如何使用Python的直译器,虽然相当的普通,但是如果你要尝试一下之后的范例的话,这是重要的基础。 本教学文件的其余部分将用许多的例子介绍Python语言的各种不同的特性,先从简单的表示式(expressions)开始,将会谈到叙述(statements)及数据型态,然后是函式(functions)及模块(module),最后会谈到较高深的观念像是例外情形(exceptions)及使用者自订的类别(user-defined classes)等等。 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; sys.exit(). 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叙述(statement)常有空白及特殊字符,所以用此法时可以把 command 所代表的叙述用”括起来,以免跟shell的其它特殊字符或是参数有所混淆。 要注意的是 python file 指令跟 python 。如果是指令是延续上一行的话就会出现secondary prompt符号,这个 secondary prompt 就通常是 . 。一进入python的互动模式的话直译器会出现一个欢迎信息,以及版本编号辑版权说明,接下来就是第一个prompt。如下所示: pythonPython 1.5.2b2 (#1, Feb 28 1999, 00:02:06) GCC 2.8.1 on sunos5Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam当你输入需要多行的结构时,直译器就会自动会出现延续上一行的prompt符号,下面的例子是 if 叙述的情况: the_world_is_flat = 1 if the_world_is_flat:.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号