zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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-learningday031.数据容器.py", line 64, in <module>
    main()
  File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday031.数据容器.py", line 62, in main
    fun2()
  File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday031.数据容器.py", line 57, in fun2
    fun1()
  File "D:SoftwareDonwloadIntsallComputerRelatedPyCharmheima-learningday031.数据容器.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安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述