内容正文:
情景三 优化程序的性能
任务
mission
1
2
3
4
函数
异常处理
面向对象程序设计
包与库
5
文件操作
2
任务三 异常处理
一.异常处理
1. 异常的概念
当我们在写Python代码的时候,或多或少都会遇到代码错误或者异常的情况,那异常与错误有什么区别呢? 异常是指不完整、不合法输入,或者计算出现错误(但这时的语法和逻辑是正确的);错误是指代码不符合解释器或者编译器语法要求。
当程序运行时,如果Python解释器遇到一个错误,会停止程序的执行并且提示一些错误信息,这就是异常。通常将程序停止执行并且提示错误信息这个动作称之为:抛出异常。在程序开发时,很难把所有的特殊情况都处理的面面俱到,通过异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性。
4
二. 异常处理
2. 捕获异常
在程序开发中,如果对某些代码的执行不确定是否正确,可以增加try来捕获异常。try:尝试,下方编写要尝试的代码,不确定是否能正常执行的代码;except:如果不是,下方编写尝试失败的代码。
捕获异常的语法格式如下:
try:
尝试执行的代码
except:
出现错误的处理方法
5
二. 异常处理
3. 常见异常
序号 异常名称 描述
1 AttributeError 对象没有这个属性
2 EOFError 没有内建输入,到达EOF 标记
3 IndexError 序列中没有该索引(index)
4 ImportError 导入模块/对象失败
5 IOError 输入/输出操作失败
6 KeyError 映射中没有该键
7 LookupError 无效数据查询的基类
8 NameError 未声明/初始化对象(没有属性)
9 OSError 操作系统错误
10 SyntaxError Python语法错误
11 TypeError 对类型无效的操作
12 TabError Tab 和空格混用
13 ValueError 传入的参数无效
14 WindowsError 系统调用失败
15 UnicodeError Unicode 相关的错误
16 ZeroDivisionError 除(或取模)零(所有数据类型)
三. 任务三 小结
通过本次任务的学习和实践,使我们了解了异常处理的功能和特点,掌握了常见异常名称和错误类型捕获的方法,养成良好的编程习惯;并且通过综合实训的引导,能够熟练捕获异常以及出现错误后的处理方法。实际上这和我们做人做事的道理是一样的,同学们要努力拓展知识的宽度和深度,面对同一个问题,多思考,多实践,多改进,多总结。没有做不到,只有想不到,这也是学无止境的道理。
7
任务四 包与库
一. 包与库
1. 什么是包
简单来说,包(package)就是一个文件夹,每个包目录中必须存在__init__.py文件,也就是装着__ init __.py文件的文件夹,该文件的内容可以为空。包是一个分层次的文件目录结构,是模块和子包的集合体。
2. 什么是库
库(library),是模块和包的集合,分为标准库、第三方库和自定义库;Python的标准库也称为Python内置库,是随着Python安装的时候默认自带的库,常用标准库如右表所示。
常用的标准库
序号 名称 功能描述
1 os 操作系统管理
2 sys 解释器交互
3 shutil 文件管理
4 math 数学常数和数学函数
5 random 随机数
6 datetime 日期和时间
7 time 时间访问和转换
8 json JSON编码和解码
9 glob 查找文件
10 urllib http访问
9
一. 包与库
3. 包的使用
首先打开PyCharm,在当前项目(D:\py)上单击右键,选择“New”,在弹出的子菜单中选择创建“Python package”,输入包名“cqcvc”后回车确定即可;紧接着鼠标右键单击该包名,创建三个py文件分别是__init__.py、div.py和leapyear.py。
10
一. 包与库
4. 导入包
(1)import 包名[.模块名 [as 别名]]
(2)from 包名 import 模块名 [as 别名]
(3)from 包名.模块名 import 成员名 [as 别名]
11
二. 标准库
在常用标准库中有一个操作文件和文件夹的os库,它提供通用的、基本的操作系统交互功能,主要有:系统相关变量和操作、文件和目录相关操作、执行命令和管理进程,使用print( dir(os) )可以发现,os标准库包含了丰富的函数。
os标准库还包含了一个path子模块,该子模块主要提供了丰富的路径操作方法,处理文件路径及信息等操作。
12
三. 第三方库
1. NumPy
NumPy是Python的一种开源的数值计算扩展,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用,可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效。
2. matplotlib
matplotlib是一个python 2D绘图库,利用它可以画出许多高质量的图像,开发者仅需要几行代码,便可以生成直方图,条形图,饼图,散点图等。
13
四. 任务四 小结
通过本次任务的学习和实践,使我们了解了包与库的区别和特点,掌握了如何创建包和导入包的三种方法,并且通过综合实训的引导,能够熟练运用标准库大幅提高程序开发的效率;能够安装和使用第三方库完成特定功能的实现。
功能强大的第三方库,可以让开发者站在巨人的肩膀上工作,将重要工作由造轮子变成了找轮子,而一个好的轮子有以下特殊:开源、低耦合、有开发文档、接口友好、社区相对活跃等。为了找到好轮子,需要同学们具备信息检索能力、外文资料阅读能力和代码阅读能力以及平时的经验积累。正所谓:“不积跬步无以至千里,不积小流无以成江海”。
14
任务五 文件操作
一. 文件的打开与关闭
1. 文件的打开
打开文件使用open内置函数来实现,open底层调用的是操作系统的接口;打开文件可以使用open 和with open两种方式来完成,具体格式如下。
f1 = open(文件名,读写模式,encoding='utf-8')
with open(文件名,读写模式,encoding='utf-8') as f2:
序号 读写模式 描述
1 ‘r’ 以只读方式打开文件(默认方式)
2 ‘w’ 以只写方式打开文件(打开时清空文件)
3 ‘a’ 打开文件,在文件末尾添加数据
4 ‘rb’ 以只读方式打开二进制文件
5 ‘wb’ 以只写方式打开二进制文件
6 ‘ab’ 以添加方式打开二进制文件
7 ‘+’ 放在上面模式后,设置读写模式
16
一. 文件的打开与关闭
2. 文件的关闭
文件使用完后,切记要使用close函数关闭已打开的文件。即使文件会在程序退出后自动关闭,但是考虑到数据的安全性,在每次使用完文件后,都要使用close函数关闭文件,否则一旦程序崩溃,很可能导致文件中的数据没有保存。
f1.close( )
17
二. 读文件和写文件
1. 读文件
可以用read( )、readline( )和readlines( )来读取文件的内容。
(1) read( ):一次性读取文件中的数据,可选参数size,用于控制读取文件的字节数, 如果省略表示一次性全部内容。
(2) readline( ) 每次读取文件的一行数据,如果给定了size,有可能只返回一行的部分内容,以字符串的形式返回,并在结尾会有一个换行符‘
’。
(3) readlines( )一次读取整个文件,并自动将文件内容分析成一个行的列表。
18
二. 读文件和写文件
2. 写文件
向打开的文件写入数据的函数有两个,分别是:write( )、writelines( )。
(1) write( ):该函数用来将文本字符串写入已经创建的文件中。
(2) writelines ( ):该函数把对象中的多个字符串一次性全部写到文件中。需要注意的是,序列中的内容也必须是字符串类型才可以。
19
三. 任务五 小结
通过本次任务的学习和实践,使我们了解了编码格式和文件读写模式,掌握了文件打开和关闭的方法;并且通过综合实训的引导,能够根据实际需求熟练运用read( )、readline( )和readlines( )来读取文件,通过 write( )和writelines( )来写文件。最后通过强化训练将本次“文件操作”应用和上一次“包与库”的应用联系起来协同完成,起到了巩固拓展、举一反三的目的。
20
$$