Python之异常、模块

异常

在Python中,程序在执行过程过产生的错误称为异常,如:列表索引越界、打开不存在的文件等。

在Python中,所有异常类都是Exception的子类。每次执行程序遇到错误的时候,程序就会引发异常。如果这个异常对象没有进行处理和捕捉,程序就会用所谓回溯(trace back,一种错误信息)终止执行,这些信息包括错误名称、原因和错误发生的行号。

常见异常
异常名称原因
NameError尝试访问一个未声明的变量
ZeroDivisionError当除数为零的时候
SyntaxError语法错误
IndexError序列下标错误
KeyError字典中不存在的键访问时
FileNotFoundError尝试打开不存在的文件时
AttributeError当尝试访问未知的对象属性时
异常处理
1、try-except

利用try-except捕获处理异常
例如:

def div(a,b):
    return a/b

if __name__=="__main__":
    try:
        a,b=5,3
        print(div(a,b))
#        c,d=5,0
#        print(div(c,d))
        e,f="hello","python"
        print(div(e,f))
    except ZeroDivisionError:
        print("除数为零,请重新输入")
    except TypeError:
        print("类型错误,请重新输入")
    except Exception:
        print("其他问题,请重新输入")

输出结果:
1.6666666666666667
类型错误,请重新输入
一条语句捕获多个异常、else、finally

例如:

def div(a,b):
    return a/b

if __name__=="__main__":
    
    try:
        a,b=5,3
        print(div(a,b))
        c,d=5,0
        print(div(c,d))
#        e,f="hello","python"
#        print(div(e,f))
#    except Exception:
#        print("其他问题,请重新输入")
    except (ZeroDivisionError,TypeError) as e:
        print("出现错误,请重新输入")
        print(e)
    except Exception:
        print("其他问题,请重新输入")
    else:
        print("异常不发生时,会执行的代码,发生时,不执行的代码段.....,通常类似于goto.....")    
    finally:
        print("总会被执行的代码段,通常用于资源回收,但python不太常用")
       
输出结果:
1.6666666666666667
出现错误,请重新输入
division by zero
总会被执行的代码段,通常用于资源回收,但python不太常用
2、抛出异常

例如:


try:
    print("hello....")
    raise NameError
#    name=NameError()
#    raise name
    
    
#    index=IndexError()
#    raise index
    
    raise IndexError("hello index......")
    
except NameError:
    print("产生了异常....")
    try:
        raise IndexError 
#        raise IndexError from Exception
    except IndexError:
        print("在NameError中,跑出了IndexError....")
except IndexError as e:
    print("index......")
    print(e)
    try:
        raise
    except IndexError:
        print("我们再一次抛出的异常类")

输出结果:
hello....
产生了异常....
在NameError中,跑出了IndexError....
3、assert语句

assert语句又称作断言,指的是期望用户满足指定的条件。当用户定义的约束条件不满足的时候,它会触发AssertionError异常,所以assert语句可以当作条件格式的raise语句。
例如:

i=1
print("--------")
try:
    assert i==10,"i应该等于10"
except AssertionError as e:
    print("assetion error....")
    print(e)
print("hello.....")

输出结果:
--------
assetion error....
i应该等于10
hello.....

模块

with资源管理器
class myObj:
    
    def __enter__(self):
        print("myobj enter.......")
        return self
        
    def __exit__(self,a,b,c):
        print("资源回收的代码.....")
    
    def a(self):
        print("my function......")
        
        
if __name__=="__main__":
    with myObj() as obj:
        print("with block......")
        raise Exception
        obj.a()

输出结果:
myobj enter.......
with block......
资源回收的代码.....
Traceback (most recent call last):
  File "h:/大二/Python/source/模块/6-5-7.py", line 24, in <module>
    raise Exception
Exception
包、模块的导入

模块的导入:

import math

print(math.e)
print(math.pi)
print(math.pow(2,5))

from math import sin
print(math.sin(math.pi/2))
print(sin(math.pi/2))

from math import pi
print(sin(pi/2))

输出结果:
2.718281828459045
3.141592653589793
32.0
1.0
1.0
1.0

包的导入:

test源码:

def add(a,b):
    return a+b


def sub(a,b):
    return a-b

if __name__=="__main__":
    print("hello python")
    print(add(7,0))
    print("test ...over")

test1源码:

import test

print(test.add(3,5))

print(test.sub(3,5))

from test import add,sub
print(add(1,2))
print(sub(3,4))


print(__name__)

输出结果:
8
-2
3
-1
__main__
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值