文章目录
- 第九章:
- 9.异常
- 9.1 异常的捕获
- 9.1.1 捕获指定异常
- 9.1.2 捕获多个异常
- 9.1.3 捕获全部异常
- 9.1.4 异常else
- 9.1.5 异常的finally
- 9.2 异常的传递性
- 9.3 Python模块
- 9.3.1 模块的导入
- import模块名
- from 模块名 import 功能名
- from 模块名 import *
- as定义别名
- 9.3.2 自定义模块
- 测试模块
- __all__变量
- 9.4 Python包
- 9.4.1 自定义包
- 9.4.2 安装第三方包
- pip - 安装
- Pycharm - 安装
第九章:
9.异常
概念:检测到一个错误时,解释器就无法继续执行下去,出现了一些错误提示,这就是’异常‘,也就是常说的’BUG‘。
f = open("test.txt", "r", encoding="ETF-8")
9.1 异常的捕获
作用:在力所能及的范围内,对可能出现的bug,进行提前准备、提前处理。
通常当程序遇到BUG,一般有两种情况:
-
整个程序因为BUG而停止运行
-
对BUG进行提醒,程序继续执行
基本语法:
try:
可能发生的错误代码
except:
如果出现错误所执行的代码
try:
f = open("test.txt", "r", encoding="UTF-8")
except:
f = open("test.txt", "w", encoding="UTF-8")
9.1.1 捕获指定异常
基本语法:
try:
print(age)
except:
print("age变量名称未定义,")
注意:
-
如果执行代码的异常类型与要捕获的异常类型不同,则无法捕获异常
-
一般try下方只放一行的尝试执行代码
try:
print(age)
except NameError as e:
print("出现了变量未定义的异常")
print(e)常")
1
9.1.2 捕获多个异常
try:
# print(age)
1 / 0
except (NameError,ZeroDivisionError ):
print("出现了变量未定义的异常或除0的异常")
9.1.3 捕获全部异常
try:
f = open("Python.txt", "r", encoding="UTF=8")
except Exception as e:
print("出现异常")
9.1.4 异常else
else:如果没有异常所要执行的代码。
try:
f = open("Python.txt", "w", encoding="UTF=8")
except Exception as e:
print("出现异常")
else:
print("没有出现异常")
9.1.5 异常的finally
finally:无论是否异常都要执行的代码。
try:
f = open("Python.txt", "r", encoding="UTF=8")
except Exception as e:
print("出现异常")
else:
print("没有出现异常")
finally:
f.close()
9.2 异常的传递性
def func01(): # 异常在func01中没有被捕获
print("func01 - start!")
num = 1 / 0
print("func01 - end!")
def func02(): # 异常在func02中没有被捕获
print("func02 - start!")
func01()
print("func02 - end!")
def main(): # 异常再main函数中捕获
try:
func02()
except Exception as e:
print(e)
注意:所有函数都没有捕获异常时,程序会报错。
9.3 Python模块
模块概念:一个Python文件(.py),模块能定义函数,类和变量,也可包含可执行代码。
模块作用:python中有很多各种不同的模块,每一行都可以帮助我们可以快速实现某些功能。
9.3.1 模块的导入
语法:[from 模板名] import [模板 | 类 | 变量 | 函数 | *] [as 别名]
常用的组合形式:
- import 模块名
- from 模块名 import 类、变量、方法等
- from 模块名 import *
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
import模块名
语法:
import 模块名
import 模块1, 模块2
模块名.功能名()
import time
print("start")
time.sleep(5)
print("end")
from 模块名 import 功能名
语法:
from 模块名 import 功能名
功能名()
from time import sleep
print("start")
sleep(5)
print("end")
from 模块名 import *
语法:
from 模块名 import *
功能名()
from time import *
print("start")
sleep(5)
print("end")
as定义别名
语法:
import 模块名 as 别名 # 模块定义别名
from 模块名 import 功能名 as 别名 # 功能定义别名
# 模块定义别名
import time as tt
print("start")
tt.sleep(5)
print("end")
# 功能定义别名
from time import sleep as sl
print("start")
sl(5)
print("end")
9.3.2 自定义模块
from my_module1 import test
from my_module2 import test # 不同模块的同名时,调用的是后面导入的模块功能
test(10, 20)
测试模块
此时,无论是当前文件,还是其他导入该模板的文件,在运行的时候都会自动执行test函数。
解决方法:在当前文件中使用___main____变量即可。
def test(a, b):
print(a+b)
if __name__=='_main_':
_':
test(10, 10)
__all__变量
当使用from xx import *导入时,只能导入该列表的元素
9.4 Python包
概念:一个文件夹,该文件夹包含了____init____.py文件,该文件用于包含多个模块文件。
作用:包可以帮助我们管理模块文件,包含多个模块,包的本质依旧是模块。
9.4.1 自定义包
步骤:
-
新建包
-
新建包内模块
-
模块代码
在_____init_____.py文件中添加__all__=[‘’],可控制导入的模块列表______
from 包名 import *
模块名.目标
__all__ = ["my_module1"]
9.4.2 安装第三方包
pip - 安装
语法:pip install 包名称
也可连接国内的网站进行包的安装:
语法:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
该链接为清华大学提供的一个网站,可供pip程序下载第三方包。