Python异常、模块、包
一、前言
- 为什么要捕获异常?
- 我们不是力求程序完美运行,而是在力所能及的范围内,对可能出现的bug,进行提前准备、提前处理(捕获异常)
- 当我们的程序遇到了bug,那么接下来两种情况
- 整个程序因为一个bug停止运行
- 对bug进行提醒,整个程序继续运行
二、捕获异常
基本语法
try:
可能发生错误的代码
except:
如果出现异常执行的代码
捕获指定异常
基本语法
try:
print(name)
except NameError as e:(as后面接的是别名)
print("name变量名称未定义错误")
- 注意:
- 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常
- 一般try下方只放一行尝试执行的代码
捕获多个异常
- 当捕获多个异常时,可以把要捕获的异常类型的名字,放在except后,并使用
元组的方式书写
基本语法
try:
print(1/0)
except(NameError,ZeroDivisionError):
print('ZeroDivision错误或者ZeroDivisionError错误')
捕获所有异常
基本语法
try:
except Exception as e:
else未出现异常执行
try:
print(1)
except Exception as e:
print(e)
else:
print('我是else,是没有异常的时候执行的代码')
finally是否异常都要执行的代码
try:
f=open('test.txt','r')
except Exception as e:
f=open(test.txt",'w')
else:
print('没有异常,真开心')
finally:
f.close()
异常具有传递性
python
def func01():
print("这是func01开始")
num=1/0
print("这是func01结束")
def func02():
print("这是func02开始")
func01()
print("这是func02结束")
def main():
try:
func02()
except Exception as e:
print(e)
- 解析:异常一层一层向上传,传递到当前main()执行的最高层级
三、模块
- 什么是模块?
- Python模块(Module) ,是一个Python文件,以.py结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码
- 模块的作用:每个模块都可以帮助我们快速的实现一些功能,我们可以认为一个模块就是一个工具包,每个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能
模块导入
- 模块在使用之前需要先导入
导入语法
- 语法:[from 模块名] import [模块|类|变量|函数|*][as 别名]
- 常见组合:
- import 模块名
- from 模块名 import 类、变量、方法等
- from 模块名 import *导入模块全部内容
- import 模块名 as 别名
- from 模块名 import 功能名 as 别名
自定义模块
- 命名,自定义模块名必须要符合标识符命名规则
- 注意:
- 函数在同一个模块里的名称一样,代码运行后执行后面的语句,前面的my_test被后面的覆盖
__name__变量
-
模块里面有测试代码,我们import模块的时候,会执行所有的代码
-
解决办法:
- __name__是函数的内置变量;在本模块文件自己调用自己,name__的值就是__main
Pythonif __name__=='__main__'#在测试代码前加上这个
__all__变量
- 如果一个模块中有'all'变量,当使用'from xxx import *'导入时,只能导入这个列表中的元素
Python
__all__=["test_A"]
def test_A():
print("testA")
def test_B():
print("testB")
四、包
前言
- 什么是包?
- 从物理上看,包就是一个文件假,在该文件夹下包含了一个__init__.py文件,该文件夹可以用于包含多个模块文件,从逻辑上看,包的本质仍然时模块

包的使用
基本上跟模块一致
- 注意:在包里面对*进行限制,我们需要在__init__.py文件里面定义__all__=[ ]
安装第三方包
cmd安装

- 这个是在国外的网站下载

- 带网址下载
- 在Pycharm下载第三方包


-
