Python:异常处理

161 阅读3分钟

常见的异常类型

异常名称描述
AttributeError对象没有这个属性
OSError操作系统错误
ImportError导入模块/对象失败
IndexError序列中没有此索引(index)
KeyError没有这个键
NameError未声明/初始化对象(没有属性)
SyntaxErrorPython语法错误
TypeError对类型无效的操作
ValueError传入无效的参数
Warning警告的基类

为了尽量减少代码异常对程序带来的影响,我们一般有以下操作:

法1

# 捕获异常
d1 = {'name':'zs','age':18,'sex':'男','python':50}
try:
    print(d1['python'])
except:                    #当try的条件不满足的时候,就运行
    print('没有这个key')
    d1['python']=100
else:
    print('捕获的代码没有问题') #捕获的代码没有问题的时候就执行
print(d1)

输出结果:

image.png

法2

raise Exception()

代码输出:Exception

断言

assert 4>9
print('NO PROBLEM')

当assert之后的条件判断成立之后才会往下执行

案例:

def cooking(minutes):
    if minutes < 5:
        raise Exception('时间没到,还不能吃')
    else:
        print('已经熟了,可以吃了')
cooking(3)
cooking(6)

代码输出:

image.png

random模块

random模块是一个python的内置的随机数模块

当然我们也可以导入自定义模块,自定义模块,就比如另一个文件中的代码,想要调用的时候除了每次都复制粘贴,也可以直接只用导入自定义模块,例如有一个文件名叫【example.py】,想要利用该文件中的【Person()】功能,就如下使用:

import example
p1=example.Person()
print(p1.drink())

输出结果:

image.png

注意:导入模块的之后,只有首次会自动执行一次(相当于缓存一次),之后无论导入多少次都不会再执行。

模块相当于一个py文件,包相当于文件夹,可包含多个文件

所以,导入的方式也有两种

  1. import test文件夹.example
  2. from test文件夹 import example

random

import random
print(random.random())      #[0,1)
print(random.random()*100)  #[0,100)
print(random.randint(1,5))  #生成[1,5]指定区间整数
print(random.sample([4,5,8,97,5,3,5],3)) #从集合中选择指定个数
print(random.choice((34,23,4,6,2)))  #从元组中随机拿一个元素出来

l1=[1,2,3,4,5]
random.shuffle(l1)   #打乱顺序
print(l1)

输出结果:

image.png

time模块

import time
print(time.localtime())
tm = time.localtime()
print(time.strftime('%m--%d-%y',tm))

输出:

image.png

time说明
%Y完整的四位数年份(例如,2023)
%H24小时制的小时数(例如,12)
%I12小时制的小时数(例如,06)
%M分钟数(例如,34)
%S秒数(例如,56)
%y两位数的年份(例如,23)
%m两位数的月份(例如,07)
%d两位数的日期(例如,05)

datetime也是与时间有关的模块

datetime.datetime.now()→输出当前时间

Json模块

json是数据格式转换的模块

json模块常用方法
json.loads()json转为字典(适用于语句)
json.dumps()字典转为json(适用于语句)
json.load()json转为字典(适用于文件)
json.dump()字典转为json(适用于文件)
d2 = {'name':'zs','age':[12,354,54,4]}
print(type(d2))
res_js = json.dumps(d2)   #转成json格式
print(res_js,type(res_js))
res_python = json.loads(res_js)  #转成python字典格式
print(res_python,type(res_python))

输出结果:

image.png