Python面向对象异常、模块

Python面向对象(4)

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解析器对模块位置的搜索顺序是:

  1. 当前目录
  2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
  3. 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
  4. 模块搜索路径存储在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 模块名

评论