Python-06:异常、模块、包
2023-04-18 16:48:04 时间
文章目录
一、异常
1.1 异常的概念
1.2 捕获异常的语法
try:
可能会发生异常的代码...
except[异常的类名 as 别名]:
出现异常执行的代码...
[else:]
未出现异常执行的代码...
[finally:]
一定会执行的代码...
1.3 代码演示
# 1、基本异常捕获(捕获所有)
try:
print(name)
except:
print("出现异常了")
# 2、捕获指定异常
try:
1 / 0
except ZeroDivisionError as e:
print("出现了除0异常")
print(f"异常信息是{e}")
# 3、捕获多个指定异常
try:
1 / 0
print(name)
except (ZeroDivisionError, NameError) as e:
print("出现了除0异常或者名字异常")
# 4、捕获全部异常(推荐这种做法,不推荐第一种)
try:
print(name)
except Exception as e:
print("出现异常了")
# 5、全家桶
try:
print(name)
except Exception as e:
print("出现异常了")
else:
print("没有出现异常,好开心")
finally:
print("我始终执行一次")
注意:别名e种存储了报错信息
1.4 异常的传递性
异常是可以在函数之间进行传递的,只要函数之间有调用关系
def fun1():
print("fun1开始...")
1 / 0
print("fun1结束")
def fun2():
print("fun2开始...")
fun1()
print("fun2结束")
def main():
fun2()
main()
# 调用会报错
fun2开始...
fun1开始...
Traceback (most recent call last):
File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday03 1.数据容器.py", line 64, in <module>
main()
File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday03 1.数据容器.py", line 62, in main
fun2()
File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday03 1.数据容器.py", line 57, in fun2
fun1()
File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday03 1.数据容器.py", line 51, in fun1
1 / 0
ZeroDivisionError: division by zero
进程已结束,退出代码1
我们可以直接在main函数里面处理异常,无需在异常的源头处理
二、模块
2.1 什么是模块
2.2 基本语法
[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
2.3 具体例子
# 1、导入整个模块
import time
time.sleep(1)
# 2、导入模块的一个或多个函数,as是取别名
from time import sleep as s, time as t
s(1)
# 取别名后只能用别名
# 3、导入模块的所有对象
from time import *
sleep(1)
# 不能用time.sleep(1)
2.4 自定义模块
自己写一个.py文件,在同一个工程的另一个文件导入即可
2.5 name 变量和 all 变量
if __name__ == '__main__':
测试代码...
这个变量在本文件运行是__main__,但是被导入时就不是了所以经常用于测试代码
__all__ = ["模块名1,", "模块名2",......]
这个变量只作用于在导入模块时使用*号的时候,也就是导入的*号其实就是里面写的变量,写了 * 就有,没写 * 就没有
三、Python包
3.1 什么是包
3.2 自定义包
直接在Python工具里面新建包即可,标志就是__init__.py这个文件,有它就是包,没有就是文件夹,这个文件也可以自己创建
3.3 包的导入
# 1、导入包里指定模块
import my_package.my_module1
my_package.my_module1._print()
# 2、导入包里的所有模块
from my_package import *
my_module1.my_print()
my_module2.my_print()
不能以 mypackage.my_module2.my_print() 的形式访问
# 3、导入模块中的某个方法
from my_package.my_module2 import my_print
my_print()
# 只能以这种形式访问
注意: all = [] 这个变量是写到__init__.py这个文件里的
3.4 安装第三方包
3.4.1 pip命令安装
# 使用的默认网站(外国的)
pip install 包名
# 指定清华源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名
3.4.2 pycharm安装
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击