【10月更文挑战第16天】
异常的概念
异常是指程序在运行过程中发生的错误或者不正常的情况。当Python检测到一个错误时,解释器就无法继续执行了,反而出现一些错误的提示。
根据报错信息我们能找到报错的地方
常见的异常
异常类型 | 说明 |
---|---|
NameError | 使用一个还未被赋值的变量 |
TypeError | 不同类型数据之间的无效操作 |
IndexError | 下标索引超出序列范围 |
KeyError | 访问字典里不存在的键 |
SyntaxError | python语法错误 |
ValueError | 传入无效的值,即使值的类型是正确的 |
IndentationError | 代码没有正确对齐,主要是缩进错误 |
对异常的预防(try、except、Exception、raise、assert)
当我们遇到异常的时候程序会终止执行,可能还会导致软件崩溃,遇到异常的解决方法:
预防:添加容错代码(代码过多代码冗余)
解决:添加捕获异常部分(try、expect)
num=input("请输入一个整数")
#异常解决方案一:添加容错代码
if num.isdigit():#判断字符串是否都是数字
num=int(num)
else:
print('输入的不是整数')
#异常解决方案二:捕获异常
try:
#可能会报错的语句
num=int(num)
except ValueError:#except异常类型---捕获对应的异常类型
#捕获到异常,处理的语句
print(f"输入{num}不是整型")
#报错的默认信息
except ValueError as v:#接受捕获的异常的报错信息
print(v)
else:
print("没有报错")
finally:
print("异常处理完毕")
#invalid literal for int() with base 10: '1.5'
print(1234)
#用except捕获到异常之后我们就在后面进行处理,提醒出现的异常
#多个expect的关系是或的关系,他们只会执行一个的
except异常类型:
对用户进行提醒的代码
如果我们不知道对应的异常类型的话
我们就写Exception ---万能异常
能接收所有的错误信息
能代替所有异常类型
如果我们看默认报错的话,我们就这么写
except Exception as a:
print(f"错误{a}")
这后面字母a,你想起什么字母就写什么字母
这个存储的是错误信息
finally 的话,不管有没有异常,都会执行下面的代码的
except和else关系是或,只能执行一个
try后面必须有一个except
finally不管是否发生异常,始终都会执行
raise会主动抛出异常
函数在出现异常的时候会将异常返回至函数调用处,在调用处就能进行处理操作
raise 异常类型(异常描述信息)---抛出异常
在后面加上异常提示信息
raise的用法:
def test():
tel=input("请输入手机号码")
if not(tel.isdigit() and len(tel)==11):#号码写错的情况下就会进行下面的代码
#将错误信息抛出
raise ValueError("请输入正确的11位手机号码")
try:
test()
except Exception as e:
print(e)
assert语句的格式:
assert测试条件,错误信息
断言语句是一种调试工具,用来测试某个断言条件,如果断言条件为真,则程序将继续正常执行;如果条件为假,则会引发AssertionError异常并显示相关错误信息
try:
n=input("请输入数字")
assert n.isdigit(),'只能输入数字'
#断言异常的话就会提示后面的错误信息的
except AssertionError as a:
print(a)
print('6')
assert n.isdigit(),'只能输入数字'
assert 判断条件 ,‘报错信息’
模块的简介
Python中的模块,指的就是一个py文件。对于一个py文件,可以只用import来导入其中的代码
模块的使用:import 模块名
import keyword---查看关键字
import random---电脑产生随机值
模块的分类
内置模块:这类模块是Python自带的,可以直接导入使用。
第三方模块:也就是别人写好的一些模块,你要安装之后才可以用(先下载再导入使用 )。
3.自定义模块:自己在项目中定义的一些模块,注意自定义模块的时候命名要遵循标识符规定和变量的命名规范,并且不要与内置模块起冲突,否则将导致模块功能无法使用。
不能和内置模块冲突了
我们在同一文件夹中写一个py文件
然后在这个文件里面导入另一个文件
假设另外一个文件叫test.py
里面有个名字
我们在这个文件中写
import test
print(test.name)
我们需要先将test.py里面的代码运行进行保存
我们在别的文件才能进行调用
最好将这几个文件放到同一个目录之下