当前位置: 首页 > web >正文

Python(9)-- 异常模块与包

1. 了解异常

异常:就是程序运行的过程中出现了错误

Bug:异常的意思,因为历史因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误。

2. 异常的捕获方法

异常处理:在可能发生异常的地方,进行捕获。当异常出现的时候,提供解决方式,而不是任由其导致程序无法运行。

捕获异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。

2.1 捕获异常语法:

2.2 捕获指定异常:

注意:

① 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。

② 一般try下方只放一行尝试执行的代码。

2.3 捕获多个异常

当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。

2.4 捕获异常并输出描述信息

2.5 异常else

else表示的是如果没有异常要执行的代码。

2.6 异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件。

2.7 捕获所有信息

3. 异常的传递

异常具有传递性。当所有函数都没有捕获异常的时候, 程序就会报错。

注:利用异常具有传递性的特点, 当我们想要保证程序不会因为异常崩溃的时候, 就可以在main函数中设置异常捕获, 由于无论在整个程序哪里发生异常, 最终都 会传递到main函数中, 这样就可以确保所有的异常都会被捕获

4. Python模块

4.1 模块的导入

模块:就是一个Python代码文件,内含类、函数、变量等,我们可以导入进行使用。

模块导入的语法如下:

常用的组合形式如:

  • import 模块名

            

  • from 模块名 import 类、变量、方法等

  • from 模块名 import *

  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名

注意:

from可以省略,直接import即可

as别名可以省略

通过”.”来确定层级关系

模块的导入一般写在代码文件的开头位置

4.2 自定义模块

自定义模块名必须要符合标识符命名规则

自定义模块并导入: 在Python代码文件中正常写代码即可,通过import、from关键字和导入Python内置模块一样导入即可使用。

if __main__ == “__main__”表示,只有当程序是直接执行的才会进入if内部,如果是被导入的,则if无法进入

注意:

不同模块,同名的功能,如果都被导入,那么后导入的会覆盖先导入的

__all__变量可以控制import *的时候哪些功能可以被导入

5. Python包

5.1 自定义包:

从物理上看,包就是一个文件夹,在该文件夹下包含了一个 __init__.py 文件,该文件夹可用于包含多个模块文件

从逻辑上看,包的本质依然是模块

__init__.py文件:创建包会默认自动创建的文件,通过这个文件来表示一个文件夹是Python的包,而非普通的文件夹。

__all__变量的作用: 同模块中学习到的是一个作用,控制 import * 能够导入的内容

导入包:

注意:必须在`__init__.py`文件中添加`__all__ = []`,控制允许导入的模块列表

5.2 安装第三方包:

  • 科学计算中常用的:numpy包
  • 数据分析中常用的:pandas包
  • 大数据计算中常用的:pyspark、apache-flink包
  • 图形可视化常用的:matplotlib、pyecharts
  • 人工智能常用的:tensorflow

pip install 包名称

pip install -i

https://pypi.tuna.tsinghua.edu.cn/simple 包名称

6. 综合案例

创建一个自定义包,名称为:my_utils  (我的工具)

在包内提供2个模块 s

tr_util.py (字符串相关工具,内含:)

  • 函数:str_reverse(s),接受传入字符串,将字符串反转返回
  • 函数:substr(s, x, y),按照下标x和y,对字符串进行切片

file_util.py(文件处理相关工具,内含:)

  • 函数:print_file_info(file_name),接收传入文件的路径,打印文件的全部内容,如文件不存在则捕获异常,输出提示信息,通过finally关闭文件对象
  • 函数:append_to_file(file_name, data),接收文件路径以及传入数据,将数据追加写入到文件中 
str_util.py:
def str_reverse(s):"""将字符串反转返回:param s: 要反转的字符串:return: 反转后的字符串"""return s[::-1]def substr(s, x, y):"""按照下标x和y对字符串切片:param s: 原始字符串:param x: 起始索引:param y: 结束索引:return: 切片后的字符串"""return s[x:y]
file_util.py:
def print_file_info(file_name):"""打印文件内容:param file_name: 文件路径"""f = Nonetry:f = open(file_name, 'r', encoding='utf-8')content = f.read()print("文件内容:")print(content)except Exception as e:print(f"文件不存在或读取错误:{e}")finally:if f:  # 如果文件对象存在f.close()def append_to_file(file_name, data):"""追加数据到文件:param file_name: 文件路径:param data: 要追加的数据"""with open(file_name, 'a', encoding='utf-8') as f:f.write(data)print("数据追加成功!")
__init__.py
from .str_util import str_reverse, substr
from .file_util import print_file_info, append_to_file__all__ = ['str_reverse', 'substr', 'print_file_info', 'append_to_file']

main

from my_utils import str_util, file_util# 测试字符串工具
print("字符串反转:", str_util.str_reverse("Python"))
print("字符串切片:", str_util.substr("Hello World", 2, 7))# 测试文件工具
file_util.print_file_info("test.txt")  # 测试不存在的文件
file_util.append_to_file("test.txt", "这是追加的内容\n")
file_util.print_file_info("test.txt")  # 测试存在的文件

http://www.xdnf.cn/news/17677.html

相关文章:

  • AI Coding 概述及学习路线图
  • Elasticsearch Node.js 客户端的安装
  • 【功能测试】软件集成测试思路策略与经验总结
  • FFmpeg - 基本 API大全(视频编解码相关的)
  • 【数据结构】深入理解顺序表与通讯录项目的实现
  • leetcode-hot-100 (图论)
  • CobaltStrike的搭建和使用
  • 爬虫与数据分析实战
  • 【09-神经网络介绍2】
  • 一文读懂 C# 中的 Lazy<T>
  • 第10节 大模型分布式推理典型场景实战与架构设计
  • Godot ------ 平滑拖动02
  • Apache Ignite 核心组件:GridClosureProcessor解析
  • C# 异步编程(计时器)
  • Python: configparser库 ini文件操作库
  • 使用MAS(Microsoft Activation Scripts)永久获得win10专业版和office全套
  • Edit Distance
  • react中父子数据流动和事件互相调用(和vue做比较)
  • GO学习记录三
  • 基于MongoDB/HBase的知识共享平台的设计与实现
  • 【Dv3Admin】菜单转换选项卡平铺到页面
  • Excel 连接阿里云 RDS MySQL
  • 5G 非地面网络(NTN)最专业的方案
  • 高并发场景下分布式ID生成方案对比与实践指南
  • 在 .NET Core 5.0 中启用 Gzip 压缩
  • 从ELF到进程间通信:剖析Linux程序的加载与交互机制
  • 玩转Docker | 使用Docker部署Trilium Notes知识库工具
  • 5G NTN 卫星测试产品
  • word格式设置-论文写作,样式,字号等
  • WPF之绑定!