笔记08:异常、模块与包

08:异常、模块与包

异常

Bug

异常的捕获

格式:

try:
    可能出错的代码
except:
    如果发生错误,执行的代码

捕获指定的异常:

try:
    q=1/0
except ZeroDivisionError as a:
    print(a)

捕获多个异常:

try:
    # 尝试执行可能引发异常的代码
    print(nm)  # 这里可能引发 NameError,因为变量 nm 未定义
    # 或者
    q = 1/0    # 这里可能引发 ZeroDivisionError,因为除数不能为零
    
except (ZeroDivisionError, NameError) as a:  # 捕获这两种特定类型的异常
    # 打印异常信息
    print(f"发生了一个错误: {a}")
    # 可以在这里添加更多的错误处理逻辑
    # 例如记录日志、发送错误通知等
    
    # 也可以根据异常类型进行不同的处理
    if isinstance(a, ZeroDivisionError):
        print("处理除零错误...")
    elif isinstance(a, NameError):
        print("处理变量未定义错误...")
 

多个错误转化成元组的形式即可

有时候并不确定是什么异常,有几个异常

捕获所有异常

第一种

格式:

try:
    可能出错的代码
except:
    如果发生错误,执行的代码

就是最开头的

第二种:

try:
    q = 1/0
except Exception as e:
    print(e)
 
division by zero
 

注意:Exception开头必须大写,在编辑器打出来可能跳括号,不要括号

异常的else和finally语法

Else代表的是如果无异常需要执行的代码

代码:

try:
    print("测试")
except Exception as e:
    print(e)
else:
    print("无异常")

运行结果:

测试
无异常

Finally后面是无论如何都要执行的代码

代码:

try:
    print("测试")
except Exception as e:
    print(e)
else:
    print("无异常")
finally:
    print("灵感菇")

输出:

测试
无异常
灵感菇

异常的传递

在函数的调用中

函数1调用了函数2

函数2调用了函数3

如果函数3有异常

函数1是可以用上面的异常的捕获

模块

模块就是一个python文件,以.py结尾

模块能定义函数、类、变量,模块也能包含可运行代码

可以认为模块就是一个工具箱

模块的导入语法

[from 模块名] import [模块或类或变量或函数或*(代表全部内容)] [as 别名]

[]代表可选,也可以没有

别名就是把第二个中括号内的另起一个自己的名字

Import模块名

Import 模块名

Import 模块1,模块2

模块名.功能名

这样来使用

优点就是打出  模块名.  的时候下面会弹出很多功能

Tip:CTRL+左键可进入模块查看

From 模块名 import 功能名

格式:

From 模块名 import 功能名

Tip:当功能名为*时,代表引入所有功能,这时候也能直接用功能,没有前置

这样直接用:

功能名()

Tip:也就是不像import一样要打前面的模块名.了    各有各的优点

自定义模块

自定义模块就是一个.py文件,直接新建,直接写就行

如果导入了同名的功能,最后一次导入的会把前面的覆盖掉

__main__与__all__

如果模块内有要测试的东西,调用模块可能直接输出了结果,这不是我们想要的

想要既能正常调用模块,又不影响模块内的测试

把测试放在

if __name__=="__main__":

即可

在from 模块 import *中

这个*代指的全部是__all__中的东西

__all__是一个列表变量

如果模块太多了,就要用包来管理模块了

从物理来看,包就是一个文件夹,在该文件下有一个__init__.py文件,其他的是各种.py模块

该文件夹可以用于包含多个模块文件

从逻辑上来看,包依然是模块

一堆模块  ->  __init__.py  ->  包

自定义包

右键项目主文件夹,新建,python 软件包

导入包

方法一:

引入:

Import 包名.模块名

调用:

包.模块.目标

这样调用的时候麻烦,但是准确

方法二:

from 包 import 模块    

from 包 import 模块1,模块2

模块.目标

方法三:

from包.模块import功能

功能

__all__

在变量 __init__.py 中,是一个列表,存储模块名(不带.py)

From 包 import *

表示引入包中的所有模块

这个所有就代表的是__all__中的

第三方包

第一种:利用pip

用pip即可轻松安装

但是要在终端里面安装

Python文件里的终端

或者pycharm里面也有

格式:

pip install 包名称

这个默认是连接外网的

比较慢,或者连了梯子就快了

也可以使用镜像

pip install -i https://网站

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

第二种:利用pycharm

右下角有python+版本号->解释器设置->小加号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值