Python程序设计_教学大纲_段震#严选优质_第1页
Python程序设计_教学大纲_段震#严选优质_第2页
Python程序设计_教学大纲_段震#严选优质_第3页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python程序设计教学大纲 安徽大学 计算机科学与技术 学院 2015 年 10 月课程性质与设置目的要求(前言)Python程序设计课程是计算机科学与技术学院各专业的专业选修课程。Python是一门开源的高级动态编程语言,支持命令式编程、函数式编程、面向对象程序设计,语法简洁清晰,并且拥有大量功能丰富而强大的标准库和扩展库。本课程将从Python语言的实现机制入手,结合示例程序和上机实验,较为系统地介绍Python语言的主要特征和编程技术。设置本课程的目的是:使学习者在全面了解Python技术历史、现状与发展趋势的基础上,系统掌握Python基本概念、编程思想以及程序设计技术,具备熟练的P

2、ython编程技能和面向对象软件设计技术思想,完成本课程的学习后能够熟练地综合应用Python技术和面向对象的思想编写程序解决现实生活中的问题,最终提高程序设计水平和计算机应用能力,从而能胜任企业软件研发以及科研院所的研发、教学任务。学习本课程的要求是:学习者应理解Python的编程模式,熟练运用Python列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用,熟练使用正则表达式处理字符串,同时掌握不同领域的Python扩展模块,并能够解决实际问题。先修课程要求:无本课程计划34学时,2学分。选用教

3、材:董付国. Python程序设计(第2版).北京:清华大学出版社,2016.5.考核方法:考查教学进程安排表:周次学时数教 学 主 要 内 容教学环节备注13Python的安装与使用Python扩展库的管理Python中的数据类型讲课23Python中的内置函数、基本输入输出Python代码编写规范Python文件名和程序运行讲课33Python中的列表使用讲课43Python中的元组、字典及集合的使用讲课53选择和循环结构讲课63字符串和正则表达式讲课73函数的设计与使用讲课83类的定义与使用类的方法和属性讲课93文本文件的基本操作二进制文件操作文件操作和目录操作讲课103异常处理结构与程

4、序调试GUI编程讲课113+1网络程序设计多线程编程课程随堂测试讲课+测试第一章 基础知识一、学习目的Python语言的发展过程、安装及简单使用;Python程序设计中的基本知识;Python代码的编写规范;Python文件名的要求;Python程序的运行方式;编写自己的包以及基本示例。本章计划6学时。二、课程内容1.0 Python是一种怎样的语言Python是一门跨平台、开源、免费的解释型高级动态编程语言,同时也支持伪编译将Python源程序转换为字节码来优化程序和提高运行速度。Python支持命令式编程、函数式编程,完全支持面向对象程序设计,语法简洁清晰,并且拥有大量的几乎支持所有领域应

5、用开发的成熟扩展库。1.1 如何选择Python版本多版本共存与切换简便方法:更改系统环境变量path查看已安装版本的方法有时候可能需要同时安装多个不同的版本,并根据不同的开发需求在两个版本之间进行切换。1.2 Python安装与简单使用默认编程环境:IDLE1.3 使用pip管理第三方包Python2中需要单独安装下载地址:/pypi/pip安装方法:cmd=python get-pip.py用法示例Python3安装包中已默认包含pip1.4.1 Python的对象模型对象是python语言中最基本的概念,在python中处理的每样东西都是对象。

6、python中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del等;非内置对象需要导入模块才能使用,如正弦函数sin(x),随机数产生函数random( )等。常用内置对象1.4.2 Python变量在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。虽然不需要在使用之前显式地声明变量及其类型,但是Python仍属于强类型编程语言。Python还是一种动态类型语言Python采用的是基于值的内存管理方式Python具有自动内存管理功能在定义变量名的时候,需要注意的问题。1.4.3 数字数字是python中最常用的对象,属于不可变对象。

7、可以表示任意大小的数字。1.4.4 字符串用单引号、双引号或三引号括起来的符号系列称为字符串单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串。1. 字符串合并2. 字符串格式化3. 转义字符1.4.5 操作符和表达式Python中很多运算符有多重含义,在程序中运算符的具体含义取决于操作数的类型。在Python中,单个任何类型的对象或常数属于合法表达式。1.4.6 常用内置函数内置函数不需要导入任何模块即可使用执行下面的命令可以列出所有内置函数 dir(_builtins_)1.4.7 对象的删除在Python中具有自动内存管理功能。可以使用del命令来显式删除对象并解除与值之

8、间的指向关系。1.4.8 基本输入输出用Python进行程序设计,输入是通过input( )函数来实现的。尽管形式一样,Python 2.x和Python 3.x对该函数的解释略有不同。1.4.9 模块的使用Python默认安装仅包含部分基本或核心模块,但用户可以安装大量的扩展模块,pip是管理模块的重要工具import 模块名1.5 Python代码规范(1)缩进(2)注释(3)每个import只导入一个模块(4)如果一行语句太长,可以在行尾加上来换行分成多行,但是更建议使用括号来包含多行内容。(5)必要的空格与空行(6)适当使用异常处理结构进行容错,后面将详细讲解。(7)软件应具有较强的可

9、测试性,测试与开发齐头并进。1.6 Python文件名1.7 Python脚本的“_name_”属性1.8 编写自己的包与模块包可以看做处于同一目录中的模块。1.9 Python快速入门问题1:用户输入一个三位自然数,计算并输出其佰位、十位和个位上的数字。问题2:已知三角形的两边长及其夹角,求第三边长。问题3:任意输入三个英文单词,按字典顺序输出。三、重点、难点提示(一)Python中的对象(二)Python代码的编写规范四、思考与练习安装Python开发包,并练习使用pip管理扩展库编程实现教材上的示例习题1.10第二章 Python数据结构一、学习目的Python中的数据结构,包括列表、元

10、祖、字典、集合以及其他基本数据结构。本章计划6学时。二、课程内容2.1 列表列表是Python中内置可变序列,是若干元素的有序集合,列表中的每一个数据称为元素,列表的所有元素放在一对中括号“”和“”中,并使用逗号分隔开;当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;在Python中,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元素、字典、集合以及其他自定义类型的对象。l 列表创建与删除l 列表元素的增加l 列表元素的删除l 列表元素访问与计数l 成员资格判断l 切片操作l 列表排序l 用于序列操作的常用内置函数l 列

11、表推导式2.2 元组元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可以修改其元素。元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“(”和“)”中,而不是方括号中。l 元组创建与删除l 元组与列表的区别l 序列解包l 生成器推导式2.3 字典字典是键值对的无序可变集合。定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有的元素放在一对大括号“”和“”中。字典中的每个元素包含两部分:键和值,向字典添加一个键的同时,必须为该键增添一个值。字典中的键可以为任意不可变数据,比如整数、实数、复数、字符串、元组等等。字典中的键不允许重复。globals()返回包含当前

12、作用域内所有全局变量和值的字典locals()返回包含当前作用域内所有局部变量和值的字典l 字典创建与删除l 字典元素的读取l 字典元素的添加与修改l 字典应用案例l 有序字典l 字典推导式2.4 集合集合是无序可变集合,使用一对大括号界定,元素不可重复。l 集合的创建与删除l 集合操作l 集合推导式2.5 再谈内置方法sorted()2.6 其他数据结构在Python中,除了基本序列之外,还有其他一些常用的数据结构,如堆、栈、队列、树、图等等。有些结构Python已经提供,而有些则需要自己利用基本数据结构来实现。l 堆l 队列l 栈l 链表l 二叉树l 有向图三、重点、难点提示(一)Pyth

13、on中的常见数据结构及其使用差异(二)Python运算符的多重含义四、思考与练习编程实现教材上的示例习题2.3 / 2.5 / 2.9 / 2.10第三章 选择与循环一、学习目的Python中的运算符和条件表达式;选择结构和循环结构的基本使用。本章计划3学时。二、课程内容3.1 条件表达式算术运算符:+、-、*、/、/、%、*关系运算符:、=、=、!=,可以连续使用测试运算符:in、not in、is、is not逻辑运算符:and、or、not,注意短路求值位运算符:、&、|、 、 3.2 选择结构l 单分支选择结构l 双分支结构l 多分支结构l 选择结构的嵌套l 选择结构应用3.3 循环结

14、构l for循环与while循环Python提供了两种基本的循环结构语句while语句、for语句。while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况;for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素;一般优先考虑使用for循环。相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。l 循环结构的优化为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。3.4 brea

15、k和continue语句break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束。continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。除非break语句让代码更简单或更清晰,否则不要轻易使用。3.5 案例精选三、重点、难点提示(一)Python的关系运算符和条件表达式(二)Python中的代码缩进(三)循环代码的优化四、思考与练习编程实现教材上的示例习题3.5 / 3.7 / 3.8第四章 字符串与正则表达式一、学习目的Python中的字符串及字符串的常用方法

16、;正则表达式的基本内容及综合运用。本章计划3学时。二、课程内容4.1 字符串在Python中,字符串也属于序列类型,除了支持序列通用方法(包括分片操作)以外,还支持特有的字符串操作方法。字符串属于不可变序列类型Python字符串驻留机制:对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。长字符串不遵守驻留机制。判断一个变量s是否为字符串,应使用isinstance(s,basestring)。在Python3之前,字符串有str和unicode两种,其基类都是basestring。在Python3之后合二为一了。在Python3中,程序源文件默认为UTF-8编码

17、,全面支持中文,字符串对象不再有encode和decode方法。l 字符串格式化l 字符串常用方法l 字符串常量4.2 正则表达式正则表达式是字符串处理的有力工具和技术。正则表达式使用某种预定义的模式去匹配一类具有共同特征的字符串,主要用于处理字符串,可以快速、准确地完成复杂的查找、替换等处理要求。Python中,re模块提供了正则表达式操作所需要的功能。l 正则表达式元字符.:匹配除换行符以外的任意单个字符*:匹配位于*之前的0个或多个字符+:匹配位于+之前的一个或多个字符|:匹配位于|之前或之后的字符:匹配行首,匹配以后面的字符开头的字符串$:匹配行尾,匹配以$之前的字符结束的字符串?:匹

18、配位于?之前的0个或1个字符:表示位于之后的为转义字符:匹配位于中的任意一个字符-:用在之内用来表示范围():将位于()内的内容作为一个整体来对待:按中的次数进行匹配b:匹配单词头或单词尾B:与b含义相反d:匹配任何数字,相当于0-9D:与d含义相反s:匹配任何空白字符S:与s含义相反w:匹配任何字母、数字以及下划线,相当于a-zA-Z0-9_W:与w含义相反l re模块主要方法compile(pattern,flags):创建模式对象search(pattern,string,flags):在字符串中寻找模式match(pattern,string,flags):从字符串的开始处匹配模式fi

19、ndall(pattern,string,flags):列出字符串中模式的所有匹配项split(pattern,string,maxsplit=0):根据模式匹配项分割字符串sub(pat,repl,string,count=0):将字符串中所有pat的匹配项用repl替换escape(string):将字符串中所有特殊正则表达式字符转义l 直接使用re模块方法l 使用正则表达式对象l 子模式与match对象l 正则表达式应用案例三、重点、难点提示(一)正则表达式子模块扩展语法(二)字符串编码,字符串格式化四、思考与练习编程实现教材上的示例习题4.2 / 4.3 / 4.5第五章 函数设计与使

20、用一、学习目的Python中函数的定义方法;参数类型;变量作用域。本章计划3学时。二、课程内容5.1 函数定义def 函数名(参数列表):注释函数体5.2 形参与实参函数定义时括弧内为形参,一个函数可以没有形参,但是括弧必须要有,表示该函数不接受参数。函数调用时向其传递实参,将实参的值或引用传递给形参。在函数内直接修改形参的值不影响实参。5.3 参数类型在Python中,函数参数有很多种:可以为普通参数、默认值参数、关键参数、可变长度参数等等。Python函数的定义非常灵活,在定义函数时不需要指定参数的类型,也不需要指定函数的类型,完全由调用者决定,类似于重载和泛型;函数编写如果有问题,只有在

21、调用时才能被发现,传递某些参数时执行正确,而传递另一些类型的参数时则出现错误。l 默认值参数def 函数名(形参名=默认值,) 函数体默认值参数必须出现在函数参数列表的最右端,且任何一个默认值参数右边不能有非默认值参数。调用带有默认值参数的函数时,可以不对默认值参数进行赋值,也可以赋值,具有较大的灵活性。l 关键参数关键参数主要指实参,即调用函数时的参数传递方式。通过关键参数传递,实参顺序可以和形参顺序不一致,但不影响传递结果,避免了用户需要牢记位置参数顺序的麻烦。l 可变长度参数可变长度参数主要有两种形式:*parameter和*parameter,前者用来接受多个实参并将其放在一个元组中,

22、后者接受字典形式的实参。l 参数传递的序列解包传递参数时,可以通过在实参序列前加星号将其解包,然后传递给多个单变量形参。5.4 return语句return语句用来从一个函数中返回,即跳出函数,也可用return语句从函数中返回一个值。如果函数没有return语句,Python将认为该函数以return None结束。5.5 变量作用域变量起作用的范围称为变量的作用域。一个变量在函数外部定义和在函数内部定义,其作用域是不同的。局部变量的引用比全局变量速度快。三、重点、难点提示(一)默认值参数,关键参数,可变长度参数,参数传递时的序列解包(二)Lambda表达式四、思考与练习编程实现教材上的示例

23、习题5.2 / 5.3 / 5.10第六章 面向对象程序设计一、学习目的Python中类的定义与使用;类的方法;Python2和Python3中的类的属性。本章计划3学时。二、课程内容6.1 类的定义与使用l 类定义语法Python使用class关键字来定义类,class关键字之后是一个空格,然后是类的名字,再然后是一个冒号,最后换行并定义类的内部实现。类名的首字母一般要大写,当然您也可以按照自己的习惯定义类名,但是一般推荐参考惯例来命名,并在整个系统的设计和实现中保持风格一致,这一点对于团队合作尤其重要。例如:定义了类之后,可以用来实例化对象,并通过“对象名.成员”的方式来访问其中的数据成员

24、或成员方法,例如下面的代码:Python提供了一个关键字“pass”,类似于空语句,可以用在类和函数的定义中或者选择结构中。当暂时没有确定如何实现功能,或者为以后的软件升级预留空间,或者其他类型功能时,可以使用该关键字来“占位”。l self参数类的所有实例方法都必须至少有一个名为“self”的参数,并且必须是方法的第一个形参(如果有多个形参的话),“self”参数代表将来要创建的对象本身。在类的实例方法中访问实例属性时需要以“self”为前缀,但在外部通过对象名调用对象方法时并不需要传递这个参数,如果在外部通过类名调用对象方法则需要显式为self参数传值。在Python中,在类中定义实例方法

25、时将第一个参数定义为“self”只是一个习惯,而实际上类的实例方法中第一个参数的名字是可以变化的,而不必须使用“self”这个名字。l 类成员与实例成员这里主要指数据成员,或者广义上的属性。可以说属性有两种,一种是实例属性,另一种是类属性。实例属性一般是指在构造函数_init_()中定义的,定义和使用时必须以self作为前缀;类属性是在类中所有方法之外定义的数据成员。在主程序中(或类的外部),实例属性属于实例(对象),只能通过对象名访问;而类属性属于类,可以通过类名或对象名访问。在类的方法中可以调用类本身的其他方法,也可以访问类属性以及对象属性。在Python中比较特殊的是,可以动态地为类和对

26、象增加成员,这一点是和很多面向对象程序设计语言不同的,也是Python动态类型特点的一种重要体现。l 私有成员与公有成员Python并没有对私有成员提供严格的访问保护机制。在定义类的属性时,如果属性名以两个下划线“_”开头则表示是私有属性,否则是公有属性。私有属性在类的外部不能直接访问,需要通过调用对象的公有成员方法来访问,或者通过Python支持的特殊方式来访问。Python提供了访问私有属性的特殊方式,可用于程序的测试和调试,对于成员方法也具有同样的性质。私有属性是为了数据封装和保密而设的属性,一般只能在类的成员方法(类的内部)中使用访问,虽然Python支持一种特殊的方式来从外部直接访问

27、类的私有成员,但是并不推荐您这样做。公有属性是可以公开使用的,既可以在类的内部进行访问,也可以在外部程序中使用。在Python中,以下划线开头的变量名和方法名有特殊的含义,尤其是在类的定义中。用下划线作为变量名和方法名前缀和后缀来表示类的特殊成员:_xxx:这样的对象叫做保护成员,不能用from module import *导入,只有类对象和子类对象能访问这些成员;_xxx_:系统定义的特殊成员;_xxx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名._类名_xxx”这样的特殊方式来访问。Python中不存在严格意义上的私有成员。6.2 方

28、法在类中定义的方法可以粗略分为四大类:公有方法、私有方法、静态方法和类方法。其中,公有方法、私有方法都属于对象,私有方法的名字以两个下划线“_”开始,每个对象都有自己的公有方法和私有方法,在这两类方法中可以访问属于类和对象的成员;公有方法通过对象名直接调用,私有方法不能通过对象名直接调用,只能在属于对象的方法中通过“self”调用或在外部通过Python支持的特殊方式来调用。如果通过类名来调用属于对象的公有方法,需要显式为该方法的“self”参数传递一个对象名,用来明确指定访问哪个对象的数据成员。静态方法和类方法都可以通过类名和对象名调用,但不能直接访问属于对象的成员,只能访问属于类的成员。一

29、般将“cls”作为类方法的第一个参数名称,但也可以使用其他的名字作为参数,并且在调用类方法时不需要为该参数传递值。6.3 属性Python 2.x和Python 3.x对属性的实现和处理方式不一样,内部实现有较大的差异,使用时应注意二者之间的区别。l Python 2.x中的属性l Python 3.x中的属性在Python 3.x中,属性得到了较为完整的实现,支持更加全面的保护机制。例如下面的代码所示,如果设置属性为只读,则无法修改其值,也无法为对象增加与属性同名的新成员,同时,也无法删除对象属性。6.4 常用特殊方法Python类有大量的特殊方法,其中比较常见的是构造函数和析构函数。Pyt

30、hon中类的构造函数是_init_(),一般用来为数据成员设置初值或进行其他必要的初始化工作,在创建对象时被自动调用和执行,可以通过为构造函数定义默认值参数来实现类似于其他语言中构造函数重载的目的。如果用户没有设计构造函数,Python将提供一个默认的构造函数用来进行必要的初始化工作。Python中类的析构函数是_del_(),一般用来释放对象占用的资源,在Python删除对象和收回对象空间时被自动调用和执行。如果用户没有编写析构函数,Python将提供一个默认的析构函数进行必要的清理工作。6.5 继承机制继承是为代码复用和设计复用而设计的,是面向对象程序设计的重要特性之一。当我们设计一个新类

31、时,如果可以继承一个已有的设计良好的类然后进行二次开发,无疑会大幅度减少开发工作量。在继承关系中,已有的、设计好的类称为父类或基类,新设计的类称为子类或派生类。派生类可以继承父类的公有成员,但是不能继承其私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数super()或者通过“基类名.方法名()”的方式来实现这一目的。Python支持多继承,如果父类中有相同的方法名,而在子类中使用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。三、重点、难点提示(一)Python对象的可变性(二)属性的定义与使用四、思考与练习编程实现教材上的示例习题6.1 / 6.2第七章 文件操作

32、一、学习目的文本文件的基本操作;二进制文件的基本操作;文件操作和目录操作。本章计划3学时。二、课程内容7.1 文件基本操作文件对象名=open(文件名, 打开方式, 缓冲区)(1)文件名指定了被打开的文件名称。(2)打开模式指定了打开文件后的处理方式。(3)缓冲区指定了读写文件的缓存模式。0表示不缓存,1表示缓存,如大于1则表示缓冲区的大小。默认值是缓存模式。(4)open( )函数返回1个文件对象,该对象可以对文件进行各种操作。7.2 文本文件基本操作使用with自动关闭资源。可以在代码块执行完毕后还原进入该代码块时的现场。不论何种原因跳出with块,总能保证文件被正确关闭。7.3 二进制文

33、件操作案例精选数据库文件、图像文件、可执行文件、音视频文件、Office文档等等均属于二进制文件。对于二进制文件,不能使用记事本或其他文本编辑软件进行正常读写,也无法通过Python的文件对象直接读取和理解二进制文件的内容。必须正确理解二进制文件结构和序列化规则,才能准确地理解二进制文件内容并且设计正确的反序列化规则。所谓序列化,简单地说就是把内存中的数据在不丢失其类型信息的情况下转成对象的二进制形式的过程,对象序列化后的形式经过正确的反序列化过程应该能够准确无误地恢复为原来的对象。Python中常用的序列化模块有struct、pickle、json、marshal和shelve,其中pick

34、le有C语言实现的cPickle,速度约提高1000倍,应优先考虑使用。l 使用pickle模块l 使用struct模块7.4 文件级操作如果仅需要对文件内容进行读写,可以使用7.1节中介绍的文件对象;如果需要处理文件路径,可以使用os.path模块中的对象和方法;如果需要使用命令行读取文件内容可以使用fileinput模块;创建临时文件和文件夹可以使用tempfile模块;另外,Python 3.4的pathlib模块提供了大量用于表示和处理文件系统路径的类。l os与os.path模块l shutil模块7.5 目录操作7.6 高级话题l 计算CRC32值(Python 2.7.x)l 计

35、算CRC32值(Python 3.x版本)l 计算文本文件中最长行的长度l 计算MD5值(Python 2.7.x版本)l 判断一个文件是否为GIF图像文件l 比较两个文本文件是否相同l 使用xlwt写入Excel文件l 使用xlrd读取Excel文件l 使用Pywin32操作Excel文件l 检查word文档的连续重复字三、重点、难点提示(一)文件操作三步骤(二)二进制文件读写方式,序列化模块pickle与struct(三)遍历文件夹时递归的应用四、思考与练习编程实现教材上的示例习题7.1 / 7.2 / 7.5第八章 异常处理结构与程序调试一、学习目的异常处理的基本概念;Python中的异

36、常处理结构。本章计划1学时。二、课程内容8.1 什么是异常语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象。当Python检测到一个错误时,解释器就会指出当前流已无法继续执行下去,这时候就出现了异常。异常是指因为程序出错而在正常控制流以外采取的行为。异常分为两个阶段:第一个阶段是引起异常发生的错误;第二个阶段是检测并处理阶段。不建议使用异常来代替常规的检查,如if.else判断。应避免过多依赖于异常处理机制。当程序出现错误,python会自动引发异常,也可以通过raise显式地引发异常。8.2 Python中的异常类BaseException

37、 +- SystemExit +- KeyboardInterrupt +- GeneratorExit +- Exception +- StopIteration +- ArithmeticError | +- FloatingPointError | +- OverflowError | +- ZeroDivisionError +- AssertionError +- AttributeError +- BufferError +- EOFError +- ImportError +- LookupError | +- IndexError | +- KeyError +- Memory

38、Error +- NameError | +- UnboundLocalError +- OSError | +- BlockingIOError | +- ChildProcessError | +- ConnectionError | | +- BrokenPipeError | | +- ConnectionAbortedError | | +- ConnectionRefusedError | | +- ConnectionResetError | +- FileExistsError | +- FileNotFoundError | +- InterruptedError | +-

39、IsADirectoryError | +- NotADirectoryError | +- PermissionError | +- ProcessLookupError | +- TimeoutError +- ReferenceError +- RuntimeError | +- NotImplementedError +- SyntaxError | +- IndentationError | +- TabError +- SystemError +- TypeError +- ValueError | +- UnicodeError | +- UnicodeDecodeError |

40、 +- UnicodeEncodeError | +- UnicodeTranslateError +- Warning +- DeprecationWarning +- PendingDeprecationWarning +- RuntimeWarning +- SyntaxWarning +- UserWarning +- FutureWarning +- ImportWarning +- UnicodeWarning +- BytesWarning +- ResourceWarning*可以继承Python内置异常类来实现自定义的异常类。8.3 try.except.else结构try子

41、句中的代码块放置可能出现异常的语句,except子句中的代码块处理异常。如果try范围内捕获了异常,就执行except块;如果try范围内没有捕获异常,就执行else块。8.4 断言与上下文管理断言与上下文管理是两种比较特殊的异常处理方式,在形式上比异常处理结构要简单一些。8.4.1 断言断言语句的语法是: assert expression, reason 当判断表达式expression为真时,什么都不做;如果表达式为假,则抛出异常。 assert语句一般用于开发程序时对特定必须满足的条件进行验证,仅当_debug_为True时有效。当Python脚本以-O选项编译为字节码文件时,asse

42、rt语句将被移除以提高运行速度。8.4.2 上下文管理使用with自动关闭资源,可以在代码块执行完毕后还原进入该代码块时的现场。不论何种原因跳出with块,不论是否发生异常,总能保证文件被正确关闭,资源被正确释放。with语句的语法如下:with context_expr as var:with块 三、重点、难点提示(一)异常的概念与表现形式(二)常见异常处理结构(三)使用IDLE调试代码四、思考与练习编程实现教材上的示例第九章 GUI编程一、学习目的Python中GUI编程的基本方法;GUI中的常见组件。本章计划2学时。二、课程内容建立GUI程序的三大步骤:1)导入必需的wxPython包或

43、其他包2)建立框架类:框架类的父类为wx.Frame,在框架类的构造函数中必须调用父类的构造函数。3)建立主程序:通常做4件事建立应用程序对象、建立框架类对象、显示框架、建立事件循环-执行frame.Show(True)后,框架才看得见-执行app.MainLoop( )后,框架才能处理事件。如需在窗体上增加其他控件,可在构造函数中增加代码如需处理事件,可增加框架类的成员函数。9.1 FrameFrame:框架(窗体),容器,可移动、缩放,包含标题栏、菜单等。是所有框架的父类。wxPython的ID参数:可以明确给构造函数传递一个正整数,由程序员自行保证ID不重复并且没有重用预定义的ID号,如

44、wx.ID_OK、wx.ID_CANCEL等ID号对应的数值;9.2 Controls如需在窗体上增加其他控件,可在构造函数中增加代码。如需处理事件,可增加框架类的成员函数。常用的控件主要有按钮、静态文本标签、文本框、单选钮、复选框、对话框、菜单等等l Button、StaticText、TextCtrll Menul ToolBar、StatusBarl 对话框l RadioButton、CheckBoxl RadioButton、CheckBoxl ComboBoxl ListBoxl TreeCtrl三、重点、难点提示(一)wxPython基础知识(二)各类GUI控件的使用四、思考与练习

45、编程实现教材上的示例习题9.1 / 9.2第十章 网络程序设计一、学习目的UDP和TCP编程;网页内容的读取;使用Python开发网站的基本方法。本章计划2学时。二、课程内容Socket对象是网络通信的基础,相当于在发送端和接收端之间建立了一个管道来实现相互传递数据。Python对Socket进行了二次封装,简化了程序的开发步骤,提高了开发效率。Python提供了socket模块,提供了socket接口的访问。Python还提供了大量模块可以对网页内容进行抓取和处理。10.1 计算机网络基础知识l 网络体系结构,分层设计的好处l ftp、http、smtp、pop3、telnetl TCP、U

46、DP、端口号l IP地址l MAC地址10.2 UDP和TCP编程l UDP协议编程socket(family,type,proto)创建一个socket对象,其中family为socket.AF_INET表示IPV4,socket.AF_INET6表示IPV6;type为SOCK_STREAM表示TCP协议,SOCK_DGRAM表示UDP协议。sendto(string,address)把string指定的内容发送给address指定的地址,address是一个元组,格式为(IP地址,端口号)recvfrom(bufsize,flags) 接收数据l TCP编程connect(address

47、)连接远程计算机send(bytes,flags) 发送数据recv(bufsize,flags)接收数据bind(address)绑定地址listen(backlog)开始监听,等待客户端连接accept() 响应客户端的请求10.3 简单嗅探器实现10.4 网页内容读取在Python2中提供了urllib和urllib2两个模块用来读取网页内容,在Python3中重新进行了整合,只提供urllib一个模块。Python2中的urllib模块在Python3中被分成了urllib.request, urllib.parse和urllib.error三部分,目前只支持HTTP, (versions 0.9 and 1.0), FTP和local files三种协议。urllib2模块在Python3中被合并到urllib.request和urllib.error中去了。10.5 使用Python开发网站Python是一门脚本语言,完全可以像PHP、VBScript等脚本语言一样用来开发网页以及CGI程序。既可以直接编写Python脚本程序来生成网页,也可以把Python程序嵌入“.asp”文件,无论使用哪种方式,都可以使用服务器上已安装的所有Python扩展模块,同时也要遵守缩进以及其他格式要求,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论