python 异常的捕捉与包

这篇具有很好参考价值的文章主要介绍了python 异常的捕捉与包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

为了更深入的学习python,了解异常和包的内容:

简单的说异常就是bug,包就是多个模块(.py的文件)和一个__inti__.py。此篇文章为大家做出总结。


提示:以下是本篇文章正文内容,下面案例可供参考

1.异常的捕捉方法

1.1 了解异常

什么是异常?异常就是错误(error),在运行一些程序的时候,会出现不可执行的错误,所谓的“异常”就是我们通常讲的bug.例如:
python 异常的捕捉与包,python,经验分享,笔记

1.2 捕捉异常

有了异常,我们就要去处理这些异常,这个处理行为我们称之为:异常处理(捕捉异常)

基本的语法格式

#如果try下的代码没有异常,将会顺利输出,则不会再看except下的代码
try:
	可能发生错误的代码  
except:
	如果出现异常执行的代码
1.2.1简单捕捉异常:

例如标识符的未定义:

try:
	print(name)
except:
	#最终输入的是except下面这条语句,原因是出现了NameError
	print("这个name标识符未定义") 
1.2.2 指定和多个异常的捕捉

指定异常的捕捉

try:
	print(name)
except NameError as e:
	#这个e就是具体捕捉NameError(标识符未定义)的结果
	print("name的变量名称未定义")

多个异常的捕捉:

#除0的错误
try:
	print(1/0)
except (NameError,ZeroDivisionError) as e:
	#以元组的形式
	print(e)#输入的是ZeroDivisionError

捕捉所有异常

try:
	print(name)
except Exception as e:	#其中Exception包括了所有异常
	print(e) #最终输入相应的异常

else和finally

  • 如果try下的代码没有异常,则输出try和else下的内容

  • 论try下的内容是否异常,都要输出finally下的内容

try:
	print("你好")
except Exception as e:
	print(e)
else:
	print("你好,您输入的内容没有异常")
finally:
	print("捕捉异常已完成")

1.2.3 异常的传递性

异常是具有传递性的,例如在函数的使用的时候

# 定义一个出现异常的方法
def func1():
    print("func1 开始执行")
    num = 1 / 0     # 肯定有异常,除以0的异常
    print("func1 结束执行")
# 定义一个无异常的方法,调用上面的方法

def func2():
    print("func2 开始执行")
    func1()
    print("func2 结束执行")
# 定义一个方法,调用上面的方法

def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常了,异常的信息是:{e}")

main()

函数func1()的除0异常会传递给func2(),最后再main()中检查出异常

1.2.4 了解Error

简单了解一些这几种错误:

错误类型 功能
SyntaxError 语法错误,当源代码违反了Python的语法规则时抛出
IndentationError 缩进错误,通常是因为代码块的缩进不正确导致的
TypeError 类型错误,当操作或函数应用于不适当类型的对象时发生,如将字符串与整数相加
ValueError 值错误,当一个操作或函数接收到了合理类型但不适合其预期用途的参数时触发
ZeroDivisionError 零除错误,尝试除以零时产生的异常
OSError 操作系统错误,涵盖了与操作系统交互时发生的各种错误,包括文件找不到、权限错误等
FileNotFoundError 找不到文件错误,试图打开不存在的文件时抛出
KeyError 键错误,字典中查找不存在的键时引发

2、模块和包

2.1模块的导入和使用

首先,先了解一下python中的模块:

2.1.1 创建模块

Python 模块(Module),是一个Python 文件,以 .py 结尾.

作用:
在Python中,模块主要有以下几个重要作用:

  • 代码复用
    模块允许将相关联的代码组织在一起,成为一个独立的功能单元。这样,在不同的地方或者项目中,只需要导入相应的模块,就可以重复使用其中的函数、类或其他定义,避免了代码冗余。

  • 逻辑组织
    模块有助于按照逻辑来划分程序结构,使得大型项目变得易于管理。每个模块可以专注于一个特定的子任务或主题,使得代码更加清晰和模块化。

  • 命名空间管理
    模块创建了一个单独的命名空间,即模块内的变量和函数名不会与全局或者其他模块中的同名实体冲突。这有助于防止名称冲突,并提高了代码的可读性和可维护性。

  • 减少耦合度
    通过模块间的接口(通常是公开函数和类)进行交互,而不是直接访问模块内部实现细节,降低了不同部分之间的耦合度,增强了软件设计的灵活性。

  • 提高可测试性
    将代码划分为小块(模块)后,可以独立测试每个模块的功能,从而简化测试过程,提高测试覆盖率。

  • 资源共享
    标准库和第三方库都以模块的形式存在,开发者可以直接利用这些模块所提供的功能,而无需从头开始编写,极大地提升了开发效率。

  • 封装和数据隐藏

    模块可以封装实现细节,对外只暴露必要的API,隐藏复杂的内部逻辑,遵循“高内聚、低耦合”的原则。

例如,Python的标准库就包含了许多模块,如ossysmathdatetime等,每个模块都提供了一组特定功能的操作,用户可以根据需要导入并使用。同样,开发人员也可以自行编写模块供项目内部或外部共享使用。

python 异常的捕捉与包,python,经验分享,笔记


2.1.2 模块的导入

模块的导入语法:

[from 模块名] import [模块 || 变量 | 函数 | * ] [as 别名]
例如:
	(1import 模块名,模块名
    (2from 模块名 import 功能名
    (3from 模块名 import * #导入模块中全部的功能4import 模块名 as 别名
    (5from 模块名 import 功能名 as 别名

2.1.3 自定义模块

在自定义调用本模块时,main是在本模块下测试函数时使用的内容,例如:

def text()
	print("你好")
#在其他模块调用本模块时,if一下的内容不会被执行
if __name__ == "__main__":
	text()

在模块中指定可以使用的函数

以列表的形式表达
__all__=[函数名]

python 异常的捕捉与包,python,经验分享,笔记

2.2 python包的定义

从物理上看,包就是一个文件夹,在ptyhon中,包中包括了一个__init__.py文件和多个模块(.py)

python 异常的捕捉与包,python,经验分享,笔记

包的作用:当我们模块越来越多时,可以利用包来管理这些模块,包的本质其实也是模块

创建包:
python 异常的捕捉与包,python,经验分享,笔记

已经创建好的包
python 异常的捕捉与包,python,经验分享,笔记

包的导入

1import 包名.模块名
(2) from 包名 import **是导入包中所有的模块)
(3) 使用: 
		  模块名.功能
		  包名.模块名.功能

在包中__init__.py是管理所有包的模块,

使用指定模块,以列表的形式
__all__=[模块名]

python 异常的捕捉与包,python,经验分享,笔记

2.3 第三方包

第三方包也就是:非Python官方的包
例如一些常用的:
在Python中,有许多常用的包,这里列出一些广泛应用于数据分析、机器学习、Web开发、网络编程、图形界面设计等多个领域的核心包:

1 数据分析与科学计算

  • NumPy: 提供了高效多维数组对象和丰富的数学函数库,是数值计算的基础。
  • Pandas: 提供DataFrame对象,用于高效的数据清洗、转换、分析和操作,常用于数据预处理阶段。
  • Matplotlib: 数据可视化库,用于绘制静态、动态、交互式的图表和图形。
  • SciPy: 科学计算库,包含了众多数学算法和函数,如线性代数、优化、插值、统计等。
  • Scikit-learn: 机器学习库,实现了大量监督和无监督学习算法,包括分类、回归、聚类等。

2 Web开发

  • Django: 高级的Web框架,用于快速开发安全和可维护的网站。
  • Flask: 轻量级Web服务框架,适合小型应用和服务。
  • FastAPI: 高性能的现代Web框架,基于Python 3.6+的Type Hinting特性,用于构建RESTful APIs。

3 网络请求与爬虫

  • requests: HTTP请求库,简洁易用,用于发送HTTP请求。
  • BeautifulSoup: HTML和XML解析库,常用于网页抓取和解析。
  • Scrapy: 强大的爬虫框架,用于编写爬虫程序。

4 数据库操作

  • sqlite3: Python内置的SQLite数据库连接器。
  • pymysqlpsycopg2: MySQL和PostgreSQL数据库适配器。
  • sqlalchemy: SQL工具包和ORM框架,提供数据库抽象层。

5 日志处理

  • logging: Python标准库中的日志记录模块,用于生成和处理程序运行过程中的日志。

6 并发和异步

  • asyncio: Python标准库中的异步I/O框架,支持协程编程。
  • concurrent.futures: 提供了Future和ThreadPoolExecutor/ProcessPoolExecutor,用于并发执行任务。

7 日期与时间处理

  • datetime: Python标准库中的日期和时间处理模块。
  • pendulum: 第三方库,提供了更强大、易用的日期时间处理功能。

8 GUI开发

  • Tkinter: Python标准库中的GUI工具包。
  • PyQt: 基于Qt库的GUI框架。
  • wxPython: 另一款流行的GUI工具包。

9 分布式计算与任务调度

  • Celery: 分布式任务队列,用于异步任务处理和调度。

10 容器化与部署

  • docker: 用于构建、部署和运行应用程序的开源平台,虽然不是Python库,但Python项目常常与之结合使用。

下载第三方包:

  1. 可以在终端下载:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

例如:

python 异常的捕捉与包,python,经验分享,笔记

  1. 可以在pycharm中下载:

python 异常的捕捉与包,python,经验分享,笔记
python 异常的捕捉与包,python,经验分享,笔记
python 异常的捕捉与包,python,经验分享,笔记


总结

刚来csdn的时候只是为了查找资料,没有想过去写一些内容。然而在兄长的建议下,通过尝试写了一些内容,其中学习过程中也有期待自己的文章好不好,发出去后文章的效果怎么样。在发出第一个作品时,有了一个又一个的小粉丝,这种感觉怎么说呢,是欣喜,也是担忧,感觉有很多不足之处。在想未来时,感觉迷茫;在想现在时,感觉得活在当下。所以觉得有时候想想,多尝试分享自己的知识也是一种快乐。

通过不断的精进自己,分享出一期python中的一小节内容,在写这篇文章的时候,参考了很多网上资料,并作出总结,可能有些内容不是很完善,欢迎csdn的小伙伴来评论区讨论。

Everything will be fine!

加油!


参考:黑马程序员python教程文章来源地址https://www.toymoban.com/news/detail-837504.html

到了这里,关于python 异常的捕捉与包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [职场] 求职如何设置预期 #笔记#经验分享

    求职如何设置预期 在求职的道路上,无论处于哪个年龄阶段,合理的就业期望值才能使我们的愿望与社会的需求相吻合,才能让自己在今后的工作中发挥出最大的实力与能力。 一、结合测评软件,明确求职目标 根据霍兰德职业兴趣测试结果,偏向于什么型人格,最好就寻求

    2024年02月21日
    浏览(41)
  • [经验] 做完腺样体手术打呼噜很严重怎么办 #媒体#笔记#经验分享

    做完腺样体手术打呼噜很严重怎么办 1、打呼噜很严重怎么办 打呼噜是一种常见的睡眠障碍,不仅让睡眠质量变得很糟糕,也会影响室友或家人的睡眠质量。幸运的是,有许多方法可以减少打呼噜的发生率,从而让睡眠变得更好。 保持良好的睡眠姿势非常重要。睡觉时,枕头

    2024年02月20日
    浏览(58)
  • 顶会论文投稿经验分享-笔记【CVPR 2023预讲会】

    视频链接:Panel: 顶会论文投稿经验分享与大模型时代下的科研_哔哩哔哩_bilibili 嘉宾: 王琦,上海交通大学计算机系博士生 任星宇,上海交通大学博士三年级研究生 李逸轩,上海交通大学2022级硕士研究生 官同坤,上海交通大学2023级博士生 李逸轩:不管是对比实验、主图、

    2023年04月23日
    浏览(52)
  • [word] word如何设置每行字符数 #笔记#经验分享#媒体

    word如何设置每行字符数 如何设置每行字符数? 设置WORD设定每行中的字符数和每页中的行数的具体步骤如下: 我们需要准备的材料分别是:电脑、word文档。 1、首先我们打开需要编辑的word文档,点击打开“页面布局”。 2、然后我们在弹出来的子菜单栏中点击打开页面设置

    2024年02月22日
    浏览(41)
  • 第七单元 调试与异常捕捉

    很多时间,写代码并不能一撸到底,中间都是经历过无数次的调试,才能正常正确的运行起来。就好像一台设备刚买来也需要不断的调试才能达到最佳状态。 DotNet 程序的调试,是 DotNet 程序员必备的技能之一,开发出稳定的程序、解决程序的疑难杂症都需要很强大的调试能力

    2024年02月06日
    浏览(44)
  • 微服务时代java异常捕捉

    ​反例:​ try{   // do what you want   }catch(Exception e){   e.printStackTrace(); } ​ 正例:​ try{   // do what you want   }catch(Exception e){   log.info(\\\"你的程序有异常啦,{}\\\",e); } ​ 理由:​ printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,排查异常日志不太方便。 e.printS

    2024年02月11日
    浏览(55)
  • java全局捕捉异常并返回统一返回值

    1. 首先定义全局异常处理类 2. 当全局有接口返回已经定义的全局捕捉的异常,就会调用上面的接口统一返回信息 3. 统一返回错误页面 Error.html 当前端访问/getJobList接口时如果微服务的其他模块还未启动IllegalStateException异常就会被拦截从而重定向到Error页面,并输出错误信息:

    2024年02月12日
    浏览(40)
  • python入门级新手接单一单两百块,经验方法分享

    如何利用python在网上接单赚钱,兼职也能月入过万 学习python编程,不仅可以找到一份高薪工作,而且不打算转化或者是在校学生的话,也能为你的日常生活提高一些帮助,比如:自动化办公 爬取一些数据信息之类的.....另外闲暇时间也可以在网上接点小单,增加些收入 至少

    2023年04月19日
    浏览(41)
  • Activiti7流程结束监听事件中,抛出的异常无法被spring全局异常捕捉

    activiti7中,提供了 ProcessRuntimeEventListener 监听器,用于监听流程实例的结束事件 上述代码中,由于1/0会抛出运行时异常,理论上来说应该被我们的全局异常所捕获 实际情况是无法捕获 既然异常没有被一层一层的抛出去直到被全局异常捕获,那说明调用 ProcessCompleteListener.onE

    2024年02月06日
    浏览(43)
  • python模块与包

    表面上看是一个文件,实质是为了防止过度耦合,分类存储代码。 1)普通导入 import 模块名[ as 别名] 模块名.变量 模块名.函数名() 2)导入模块里的函数 from 模块名 import 函数名[ as 别名] 导入模块中所有函数 from 模块名 import * 不用加入模块名,直接调用函数 3)导入多个模

    2023年04月11日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包