ImageVerifierCode 换一换
格式:DOCX , 页数:93 ,大小:86.14KB ,
资源ID:14457634      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14457634.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Python教程原文.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Python教程原文.docx

1、Python教程原文1 前言Python是一个容易学习又功能强大的程序语言。它含有高效率的高阶数据结构,也是一个简单但是有效果的对象导向程序语言(object-oriented programming)。Python优雅的语法及动态型态识别(dynamic typing),加上直译式(intepretion)的本质,使得它成为一个在多种功能多种平台上撰写脚本(scripts)及快速开发的理想语言。 各种主要平台的Python直译器(interpreter)及延伸的标准链接库(library)都可以在 Python的网站( http:/www.python.org )上免费下载及自由流传(包含原

2、始码及二元执行档(binary form)。 在该网站上也有许多的档案及连结,包括了免费、第三者开发的Python模块、程序及工具, 以及许多的附带文件。 Python的直译器也可以很容易的延伸,可以加入新的由C或是C+(或其它可以由C呼叫的程序语言)所写的函数或是数据型态。Python也很适合用来当作其它应用程序的延伸语言(译者言:比如说用Python来延伸CAD, DBMaker等的功能)。 本教学文件将非正式的介绍给读者Python语言及系统的基本观念及特性。如果读者手边有一个Python的直译器将有助于获得实际的知识,但是本文件的解释都很充足,所以如果单纯离线阅读也是可以的。 若对于标

3、准的对象及模块有兴趣的话,请参阅 Python Library Reference。 若是要知道正式Python语言的标准定义的话,可参考 Python Reference Manual 。 若有兴趣用C或C+写延伸的功能的话,请参考 Extending and Embedding the Python Interpreter 以及 Python/C API Reference。市面上也有许多更深入探讨Python的书籍。 本教学文件并不试图完整的介绍每一个Python的特性,甚至也不试图介绍每一个常用的功能。 相反的,本文件介绍许多Python值得认识的功能,并且让读者对这个语言的大致风貌有

4、一个了解。 在读完此书之后,读者应该可以开始读及写Python的模块及程序,并且应该可以开始学习各种在 Python Library Reference所介绍的模块了。2 开胃菜 如果你曾经写过大型的shell script,你大概能了解那种感觉:你想要新增加一个功能,但是这个script已经实在有够大够慢够复杂的了,或者说,你想要加入的新功能需要呼叫系统功能或是其它函数,但是这些功能/函数只有C才能呼叫。你要解决的问题好像并没有严重到要重新用C来写整个程序,或者有些问题因为要用到可变长度的字符串或是特别的数据结构(像是用排序过的文件名称组成序列(list),用C来写实在比shell麻烦的太多

5、,又或者是你根本不是对C很熟。 另外一个情境是这样的:也许你要使用好几个C的链接库,但是标准开发C程序的过程(写/编译/测试/重新编译)实在太花时间,你需要能快速的开发好软件。又或者你已经些好一个应用程序,这个程序可以使用一个延伸的语言来控制。你不想创造一种语言,然后还得写好这个语言的编译器,还得把这个编译器跟你的程序放在一起。 在这些情况之下,Python也许正是你所需要的语言。Python虽然简单,却是不折不扣的程序语言。对大型的程序来说,它比起shell能提供更多的结构性及支持。另外一方面,它也提供了比C语言更多的错误检查。由于Python是一个非常高阶的语言,所以它有许多内建的数据型态

6、像是有弹性的数组及字典(dictionary)等等,如果用C来做的话得花上你大半天的时间。正是因为Python有较为一般性的数据型态,Python可以应用的范围比起awk甚或是Perl要广的很多,最起码,Python跟这些语言一样容易开发。 Python的另外一个特点就是可以将程序切成小模块,然后这些模块还可以应用在其它的程序之中。Python本身也有一个相当大的标准模块库可以让你来使用,或者当作学习Python程序设计的范例。在Python中也有内建的模块可以提供许多功能,诸如:档案I/O、系统呼叫、sockets,甚至是与Tk之类的GUI工具互动的接口。 Python是一个直译式的语言,可

7、以省掉你在开发程序时不少编译及连结程序的时间。这个Python的直译器甚至可以交互式的使用,让你在写一些小程序来试验Python语言的特性,或是测试程序时可以写节省不少时间。你还可以用Python直译器来当作计算器呢。 Python让你可以写出非常精练及可读性高的程序。用Python写出的程序通常比用C或C+写的程序要短得多,其理由如下: 因为其高阶的数据型态,使得你可以用很简单的叙述(statement)就能够表达复杂的运作过程 Python使用缩排来代替C/C+中常见的前后括号 Python不需要变量或是参数的宣告 Python 是延伸性高的语言。如果你知道如何写C语言的程序的话,你很容易

8、就可以在Python的直译器中加入新的内建函数(function)或是模块,这样做的好处是你可以让程序中关键的部分速度调到最快,或者是连结Python到binary的链接库(例如是厂商做好的图形链接库)去。一但你真的需要,你也可以把Python直译器加入到你用C写的应用程序里面去,然后Python就变成你的应用程序的延伸或是商业化的语言了。 另外一提的是,这个程序的命名由来是源自于BBC著名的节目Monty Pythons Flying Circus,跟其它恶心的爬虫类没有任何关系。如果你的文件中要提到Monty Python的话,不但照准,而且还相当鼓励。 2.1 然后呢 现在你应该对Pyt

9、hon感到有一些兴趣了吧,接下来你将看到比较多的的细节讨论。学习语言的最好途径是使用之,赶快动手吧。 在下一章我们将讨论到如何使用Python的直译器,虽然相当的普通,但是如果你要尝试一下之后的范例的话,这是重要的基础。 本教学文件的其余部分将用许多的例子介绍Python语言的各种不同的特性,先从简单的表示式(expressions)开始,将会谈到叙述(statements)及数据型态,然后是函式(functions)及模块(module),最后会谈到较高深的观念像是例外情形(exceptions)及使用者自订的类别(user-defined classes)等等。 3 使用Python的直译

10、器 3.1 如何启动直译器 在Unix之类的操作系统上,如果有安装的话,Python直译器通常安装在 /usr/local/bin/python 这个目录中。你可能需要先在Shell中设定寻找 /usr/local/bin 目录,这样你才可以在Shell中打入以下的指令来启动Python直译器 python你的Python直译器安装的位置是可以在安装时设定的,因此也有可能安装在其它的地方。你也许需要问你周遭的Python大师或是系统管理员才能知道正确的安装位置( /usr/local/python 是另外一个普遍的可能安装所在)。 要离开Python直译器的话,打入EOF的字符( 在Unix上

11、是 Control-D ,在DOS及Windows上是 Control-Z 就会使得直译器离开(zero exit status)。如果行不通的话,你可以打入以下指令离开直译器: import sys; sys.exit(). Python直译器使用每行编辑,应该不难使用。在Unix上,也许安装Python直译器的人有安装使用GNU readline链接库的功能,这样的话你会有交互式编辑以及编辑过去数据的功能。最简单的检查你有没有这项功能的方法就是在Python的提示之下打入Control-P ,如果有哔声的话,就表示你有这项功能,你可以翻到 附录 A 去看特殊键的用法。如果你没有听到哔声,或

12、是只出现 P 的话,就表示你没有这项功能,你得使用退格键(backspace)来清除目前所在行的字符了。 Python直译器的操作方法根Unix shell很像:当被呼叫时所连结的标准输入是tty device(终端机)的话,直译器会互动的读及执行所输入的指令。当被呼叫时加入文件名称参数或所连结的标准输入是连到档案的话,直译器就会读入并执行该档所含有的 script 。 第三种启动直译器的方法是打入以下的指令 python -c command arg . ,这个指令会执行 command 所代表的叙述(这跟shell的 -c option很像),因为Python叙述(statement)常有

13、空白及特殊字符,所以用此法时可以把 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 199

14、1-1995 Stichting Mathematisch Centrum, Amsterdam当你输入需要多行的结构时,直译器就会自动会出现延续上一行的prompt符号,下面的例子是 if 叙述的情况: the_world_is_flat = 1 if the_world_is_flat:. print Be careful not to fall off!. Be careful not to fall off!3.2 直译器及其周边环境3.2.1 程序错误处理当有错误产生时,直译器就会在屏幕印出错误的信息以及stack trace的所有数据。在互动模式之下,印完数据之后会再印出promp

15、t来。如果输入是来自于档案的话,在出现错误的情况下直译器在印出stack trace之后程序会以nonzero exit 的状态结束。(此处讨论不包含已经由 try 叙述及 except 子句处理外的状况(Exceptions)。有些的程序错误是没有办法挽救并且会造成nonzero exit的结束情况,这常常是内部的不一致或是某种running out of memory所造成。所有的错误信息都会被写入至标准error stream之中,正常的程序执行的输出则会写入到标准(standard output)输出之中。 如果在primary或是secondary prompte之下打入中断字符(通

16、常是 Control-C 或是 DEL),这会造成输入的中断并且会回到prompt之下。 (有一个GNU Readline package的问题可能会使这个功能失效。) 在指令执行之中打入中断字符则会引起 KeyboardInterrupt 的exception,而这是可以在 try 叙述中处理的。 3.2.2 执行Python脚本在BSD之类的Unix 系统上,我们可以在script的最前面加入以下的叙述(类似shell script),并改变档案属性为可执行: #! /usr/bin/env python如此script就会变成可执行档,可以直接执行 (假设Python的直译器是在user

17、的 $PATH) 变量之中) 。 #! 这两个字必须在script档案的最前面。值得一提的是 # 在Python之中也当作注解(comment)部分开始的符号。 3.2.3 交互式启动档当你使用互动模式的时候,如果可以在每次直译器要启动时先执行一些命令的话将是很有用的。要达成如此功能,你可以设定一个文件名称给环境变量 $PYTHONSTARTUP ,这个档案可以包含你想要在启动时执行的命令,类似 .profile 在Unix shell中的用法。 这个启动档(startup file)只有对在互动模式下有效,如果你用Python读入script时就没有用,在当 /dev/tty 是命令的输入来

18、源也没有用(其它的情况与互动模式相类似)。这个startup file所执行命令的命名空间是与其它互动模式下输入的指令相同,所以在startup file内定义或是import的对象,在之后的互动模式指令中都是可以直接使用的。你也可以在这个startup file中改变 sys.ps1 及 sys.ps2 ,如此就可以改变你的primary prompt及secondary prompt。 如果你在你的startup file中想要使用另外的在目前目录的startup file,你只需要在主要startup file (global start-up file)写入 if os.path.is

19、file(.pythonrc.py): execfile(.pythonrc.py) 。如果你想要在你的script之中使用startup file的话,你必须在你的script中写入: import osfilename = os.environ.get(PYTHONSTARTUP)if filename and os.path.isfile(filename): execfile(filename)4 非正式的Python介绍 在底下的例子里,你可以很容易区别凡是需要输入的地方都会出现prompts ( 或 . ),凡是输出的结果则没有。如果你想要跟着这个教学文件一起做的话,你就得打入所有

20、在prompts之后的指令,凡是没有prompts出现的行就是直译器输出的结果。值得注意的是,secondary promt 之后如果什么东西都没有,表示这是一个空行(直接按ENTER的结果),也表示这是一个多行指令的结束。 在本文件中的大部分例子,都有加上注释,甚至是那些互动模式下的例子。注释(comment)在Python中是以 # 之后的东西都是注释(译:跟Perl一样)。注释可以自成一行,也可以跟在空格符或是程序代码的后面。但是,如果 # 是在字符串常数(string literal)之中的话,就不代表注释的意义,而只是一个普通字符罢了。 底下是一些例子: # this is the

21、first commentSPAM = 1 # and this is the second comment # . and now a third!STRING = # This is not a comment.4.1 把Python当作计算器来用 现在我们来试一试一些简单的Python指令吧。请先启动Python的直译器并且等待primary prompt( )的出现。(应该不会很久的)4.1.1 数字 直译器就好像一个计算器一样:你可以打入一个表示式(expression),然后直译器会把这个expression的执行结果秀出来。Expression的语法都很简单直接,一般的运算符号

22、+, -, * 以及 / 的用法就跟其它的程序语言(像是Pascal或C)一样。你也可以用括号 ( ) 来表示运算执行的先后次序。例子如下: 2+24 # This is a comment. 2+24 2+2 # and a comment on the same line as code4 (50-5*6)/45 # Integer division returns the floor:. 7/32 7/-3-3跟C语言一样,等于符号 (=) 其实是表示设定某个值给一个变量的意思。虽然设定 (=) 运算本身是有结果值的,但是直译器并不会输出其结果来。 width = 20 height =

23、 5*9 width * height900一个值是可以同时设给许多变量的: x = y = z = 0 # Zero x, y and z x0 y0 z0浮点数的运算在Python里面也是支持的,如果整数与浮点数(带小数点或e的数)进行运算的话,整数部分会先转换(convert)成浮点数再进行运算。 4 * 2.5 / 3.33.0303030303 7.0 / 23.5甚至连复数的运算也支持喔,只需要把虚数部分加上 j 或是 J在其后就可以了。如果实部不为零的话,复数的写法就写成 (real+ imagj) 。或者,我们也可以用函数的方式来表示复数为 complex(real , ima

24、g) 的形式。 1j * 1J(-1+0j) 1j * complex(0,1)(-1+0j) 3+1j*3(3+3j) (3+1j)*3(9+3j) (1+2j)/(1+1j)(1.5+0.5j)复数的虚数部分及实数部分的值都是以浮点数(float point numbers)来表示的,如果 z 代表一个复数的话,你可以很轻易的用 z.real 以及 z.imag 得到一个复数的实数部分及虚数部分。 a=1.5+0.5j a.real1.5 a.imag0.5复数没有办法直接用 (float(), int() 或是 long() 转换成浮点数或是整数。事实上,复数没有直接对应的实数,你必须用

25、 abs(z) 来得到 z 的magnitude(以浮点数表示),或是如上所述用z.real 直接得到其实数部分。 a=1.5+0.5j float(a)Traceback (innermost last): File , line 1, in ?TypeError: cant convert complex to float; use e.g. abs(z) a.real1.5 abs(a)1.58113883008在互动模式之下,最后一个印出来的expression的值会储存在一个特殊变量 _ 之中。这表示,当你用Python的直译器来当作计算器用的时候,想要连续做运算其实是方便许多的。如

26、下例: tax = 17.5 / 100 price = 3.50 price * tax0.61249999999999993 price + _4.1124999999999998 round(_, 2)4.1100000000000003对于使用者来说, _ 这个变数是一个只读的变数。你没有办法设定一个值给它,当你这样做的时候,事实上你是重新创造一个同名的变量,但是跟之前系统内建的 _ 这个变量是一点关系也没有的了。4.1.2 字符串 除了数字之外, Python也有能力处理字符串(string)。字符串在Python中有很多种表达方式,它可以放在双括号”之中,也可以放在单括号里面: s

27、pam eggsspam eggs doesntdoesnt doesntdoesnt Yes, he said.Yes, he said. Yes, he said.Yes, he said. Isnt, she said.Isnt, she said.字符串常数(string literals)是可以跨越多行的,其表示方法有很多。如果要换行的话可以用”符号来表示之。如下例: hello = This is a rather long string containingnseveral lines of text just as you would do in C.n Note that w

28、hitespace at the beginning of the line is significant.nprint hello这个例子会印出以下的结果: This is a rather long string containingseveral lines of text just as you would do in C. Note that whitespace at the beginning of the line is significant.你也可以用成对的三个单引号( ) 或双引号 ( ) 来表示字符串。在此情况下你所打入的ENTER就会直接被解读为换行符号而不需要再用n了。 print Usage: thingy OPTIONS -h Display this usage message -H hostname Hostname to connect to这个例子

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2