当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的异常。
f = open("D:/12a.txx", "r", encoding="UTF-8")
f = open("D:/12a.txx", "r")
^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'D:/12a.txx
基本语法:
try:
可能发生错误的代码
except:
如果出现异常执行的代码
try:
print(name)
except NameError as e::
print("name变量名称未定义错误")
try:
f = open("D:/12a.txx", "r", encoding="UTF-8")
except:
f = open("D:/12a.txx", "w", encoding="UTF-8")
try:
print(name)
except NameError as e:
print("name未定义")
print(e) #name 'name' is not defined
try:
1 / 0
except (NameError,ZeroDivisionError) as a:
print(a) #division by zero
#捕获所有异常
try:
1 / 0
except Exception as w:
print("出错了")
print(w) #division by zero
finally表示的是无论是否异常都要执行的代码,例如关闭文件
try:
f = open("D:/12a.txx", "r", encoding="UTF-8")
except:
f = open("D:/12a.txx", "w", encoding="UTF-8")
else:
print("没有异常")
finally:
f.close()
异常是具有传递性的,当函数func()1中发生异常,并且没有捕获处理这个异常的时候,异常就会传递到函数func2()中,当func2()也没有捕获处理这个异常的时候,main函数会捕获这个异常,这就是异常的传递性。
def func1():
print("开始异常")
num = 1 / 0
print("结束执行")
def func2():
print("func2开始执行")
func1()
print("func2结束执行")
def main():
try:
func2()
except Exception as s:
print(f"异常是{s}") #异常是division by zero
main()
?
import module
module.test(1,2)
从物理上看,包就是一个文件夹,在该文件夹下包含了一个init.py文件,该文件可用于包含多个模块文件;
从逻辑上看,包的本质依然是模块;
import bao.mpdule1
bao.mpdule1.test(1,2)
?