Python面向对象(4)
- 2020 年 1 月 1 日
- 筆記
本文标识 : Python_13
本文编辑 : Jack 风
编程工具 : Anaconda、Pycharm
阅读时长 : 6分钟

1、异常的传递
1.1、try嵌套

- 首先从 test.txt 文件中读取到信息
- ^c 关闭文件
- 没有这个文件
- 最后的finally
1.2、函数嵌套调用中

- 如果try嵌套,那么如果里面的try没有捕获到这个异常,那么外面的try会接收到这个异常,然后进行处理,如果外边的try依然没有捕获到,那么再进行传递。。。
- 如果一个异常是在一个函数中产生的,例如函数A—->函数B—->函数C,而异常是在函数C中产生的,那么如果函数C中没有对这个异常进行处理,那么这个异常会传递到函数B中,如果函数B有异常处理那么就会按照函数B的处理方式进行执行;如果函数B也没有异常处理,那么这个异常会继续传递,以此类推。。。如果所有的函数都没有处理,那么此时就会进行异常的默认处理,即通常见到的那样
- 注意观察上图中,当调用test3函数时,在test1函数内部产生了异常,此异常被传递到test3函数中完成了异常处理,而当异常处理完后,并没有返回到函数test1中进行执行,而是在函数test3中继续执行
2、抛出自定义的异常
可以用
`raise
语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类

以上程序中,关于代码
#super().__init__()
的说明 这一行代码,可以调用也可以不调用,建议调用,因为__init__
方法往往是用来对创建完的对象进行初始化工作,如果在子类中重写了父类的__init__
方法,即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了,所以在以后的开发中,如果重写了父类的__init__
方法,最好是先调用父类的这个方法,然后再添加自己的功能
3、异常处理中抛出异常

4、模块介绍
4.1、模块
说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块
4.2、import
在python中主要是 用关键字,import 来引入某个模块,
在调用math模块中的函数时,必须这样引用:
模块名.函数名 import math #这样会报错 print sqrt(2) #这样才能正确输出结果 print math.sqrt(2)
4.3、from…import
Python的from语句让你从模块中导入一个指定的部分到当前命名空间中
语法如下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块fib的fibonacci函数,使用如下语句:
from fib import fibonacci
注意
- 不会把整个fib模块导入到当前的命名空间中,它只会将fib里的fibonacci单个引入
4.4、from … import *
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *
注意
- 这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
4.5、 as

4.6、定位模块
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
- 当前目录
- 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
- 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
- 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
5、模块制作
5.1、定义自己的模块
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。比如有这样一个文件test.py,在test.py中定义了函数add
#test.py def add(a,b): return a+b
5.2、调用自己定义的模块
那么在其他文件中就可以先import test,然后通过test.add(a,b)来调用了,当然也可以通过from test import add来引入
#test1.py import test result = test.add(66,22) print(result)
5.3、测试模块
在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,例如:
#test.py def add(a,b): return a+b # 用来进行测试 ret = add(123,543) print('int test.py file,,,,123+543=%d'%ret)
如果此时,在其他py文件中引入了此文件的话,想想看,测试的那段代码是否也会执行呢!
#test1.py import test result = test.add(66,22) print(result)

6、模块中的_all_
6.1、没有

6.2、有

7、使用Pip安装模块
pip 是 python 自带的一个软件,相当于手机里的应用市场,可以用来安装、卸载、搜索 python 的常见模块。 直接输入 pip 后回车,可以查看 pip 命令的所有可用参数。
7.1、安装模块
在命令行执行
pip install 模块名
7.2、卸载模块
在命令行执行
pip uninstall 模块名
7.3、搜索模块
在命令行执行
pip search 模块名