7.模块与异常详解

一、前言

本章主要解决一下前文曾提到的两个东西:模块、异常。

事实上这两个之间并没有什么直接的关联,写在同一章的原因仅仅只是因为只写一个的话,会导致篇幅太短,因为都很简单。

二、异常

我们首先来聊聊异常,这是很多高级语言都拥有的一个特性。

它并非什么高大上的东西,其仅仅只是一种程序错误的处理方式。

较低级的语言不使用它的原因很简单:对程序的性能影响较大,所以一般会更倾向于通过返回值来判断。

但对于像python这种高级语言,那就无所谓了,异常几乎随处可见,与java差不多。

为了更好理解异常,首先我们来看看低级语言是如何处理错误的:

def divi(a, b):
    if b == 0:
        return None
    return a / b


ret = divi(10, 0)
if ret == None:
    print("函数运行出错")
else:
    print(f'10/0={ret}')

就像上面这个函数一样,求两个数相除的结果,而除数b是不能为0的对吧?

所以如果这个函数检测到了b为0,那就可以通过返回None来代表当前函数出现了错误。

None在python中代表一个特殊的“空值”。

这种方法虽然效率较高,但对于我们程序员来说并不友好,你只知道这个函数调用出错了,但你却无法通过返回的None值知道具体错误的原因!

而这时就可以使用异常来替换上面的这种方式,上面的代码改为异常就是下面这样:

def divi(a, b):
    if b == 0:
        raise ValueError('除数不能为0!')
    return a / b

ret = divi(10, 0)
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux