with 语句和上下文管理器
pickle 模块 解决的是永久存储Python对象的问题 允许将字符串 列表 字典 这些Python对象给保存成文件的形式。
try-except 可以捕获和处理异常
try:
检测范围
except[expression[as identifier]]:
异常处理代码
try:
1/0
except:
print("出错了")
出错了
try:
1/1
except:
print("出错了")
1.0
try:
1/0
520+"FISHC"
except (ZeroDivisionError,ValueError,TypeError):
pass
>>>
出现这三个错误中的任何一个 直接执行pass语句 忽略跳过
try:
1/0
520+"FISHC"
except ZeroDivisionError:
print("除数不能为0")
except ValueError:
print("值不正确")
except TypeError:
print("类型不正确")
除数不能为0
捕获到异常的代码 520+FISHC 被跳过
try-except-else 当try语句没有检测到任何异常的情况下,就会执行else语句内容
try:
1/0
except:
print("异常")
else:
print("没有")
异常
>>> try:
1/1
except:
print("异常")
else:
print("没有")
1.0
没有
try-except-finally 无论异常是否发生都必须会执行的内容
try:
1/0
except:
print("异常")
else:
print("没有")
finally:
print("这里都会出现")
异常
这里都会出现
异常的嵌套
try:
try:
520+"FISHC"
except:
print("内部异常")
1/0
except:
print("外部异常")
finally:
print("收尾工作")
内部异常
外部异常
收尾工作
raise 语句 主动引发异常
raise ValueError("值不正确")
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
raise ValueError("值不正确")
ValueError: 值不正确
>>> try:
1/0
except:
raise ValueError("这样可不行")
Traceback (most recent call last):
File "<pyshell#59>", line 2, in <module>
1/0
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<pyshell#59>", line 4, in <module>
raise ValueError("这样可不行")
ValueError: 这样可不行
assert 语句 只能引发ASSertion的异常 通常用于代码调试
利用异常来实现 goto
try:
while True:
while True:
for i in range(10):
if i>3:
raise
print(i)
print("被跳过~")
print("被跳过")
print("被跳过")
except:
print("到这来了")
0
1
2
3
到这来了