Python从入门到精通秘籍十

一、Python之了解异常

当在Python中执行代码时,如果发生错误,就会抛出异常(Exception)。处理异常是编写健壮的代码的重要部分。Python提供了try-except语句来捕获和处理异常。

下面是使用Python代码详细讲解异常处理的例子:

# 1. 尝试执行可能会引发异常的代码块
try:num1 = int(input("请输入一个整数:"))num2 = int(input("请输入另一个整数:"))result = num1 / num2print("结果为:", result)# 2. 捕获特定类型的异常
except ValueError:print("输入的不是有效的整数!")except ZeroDivisionError:print("除数不能为零!")# 3. 捕获其他类型的异常
except Exception as e:print("发生了未知错误:", str(e))# 4. 如果没有发生异常,则执行这个代码块
else:print("没有发生异常!")# 5. 不管是否发生异常,都会执行这个代码块
finally:print("程序执行完毕。")

在上面的代码示例中,我们首先尝试执行可能会引发异常的代码块。如果发生异常,Python会跳转到相应的except代码块,并执行与异常类型匹配的代码。如果没有匹配的except代码块,那么会跳转到通用的Exception类型的except代码块。

在异常处理过程中,还可以使用else代码块来处理没有发生异常的情况。无论是否发生异常,都会执行finally代码块。

通过合理处理异常,我们可以使程序在出现错误时不崩溃,并提供友好的错误提示信息,从而增强代码的稳定性和可靠性。

二、Python之异常捕获

当在Python中执行代码时,如果发生错误,就会抛出异常(Exception)。异常是Python语言处理错误和异常情况的一种机制。通过捕获异常,我们可以对错误进行处理,避免程序崩溃。

下面是使用Python代码详细讲解异常捕获的例子:

# 1. 尝试执行可能会引发异常的代码块
try:num1 = int(input("请输入一个整数:"))num2 = int(input("请输入另一个整数:"))result = num1 / num2print("结果为:", result)# 2. 捕获特定类型的异常
except ValueError:print("输入的不是有效的整数!")except ZeroDivisionError:print("除数不能为零!")# 3. 捕获多个异常类型
except (TypeError, FileNotFoundError):print("发生了类型错误或文件不存在错误!")# 4. 捕获所有类型的异常
except Exception as e:print("发生了未知错误:", str(e))# 5. 获取异常信息
except ZeroDivisionError as e:print("除数不能为零!", str(e))# 6. 如果没有发生异常,则执行这个代码块
else:print("没有发生异常!")# 7. 不管是否发生异常,都会执行这个代码块
finally:print("程序执行完毕。")

在上述代码中,我们使用了try-except语句来捕获异常。首先,我们尝试执行可能引发异常的代码块。如果发生异常,Python会跳转到与异常类型匹配的except代码块,并执行其中的代码。如果没有匹配的except代码块,会继续向上查找,直到找到通用的Exception类型的except代码块。

在捕获异常时,可以根据具体情况使用特定的异常类型进行捕获,也可以使用元组同时捕获多个异常类型。此外,还可以通过as关键字获取异常对象,以便进一步处理或打印异常信息。

在异常处理过程中,可以使用else代码块处理没有发生异常的情况。不管是否发生异常,都会执行finally代码块中的代码,确保程序的某些操作无论是否成功都能得到执行。

通过合理捕获和处理异常,我们可以提高程序的稳定性和可靠性,避免由于错误导致的程序崩溃。

三、Python之异常的传递性

在Python中,异常可以在代码的不同层级之间传递。当一个异常没有在当前层级被捕获时,它会向上层级传递,直到找到匹配的异常处理程序或者到达顶层,如果仍未被捕获,则会导致程序崩溃。

下面是使用Python代码详细讲解异常传递性的例子:

# 1. 定义一个函数,该函数会抛出异常
def divide(x, y):try:result = x / yprint("结果为:", result)except ZeroDivisionError:print("除数不能为零!")# 抛出新的异常raise ValueError("除数不能为零")# 2. 调用函数,并捕获抛出的异常
try:divide(10, 0)
except ValueError as e:print("捕获到异常:", str(e))# 3. 异常在多层级之间传递
def calculate():try:divide(10, 0)except ValueError as e:# 在函数内部重新抛出异常raise RuntimeError("发生了运行时错误") from etry:calculate()
except RuntimeError as e:print("捕获到异常:", str(e))print("原始异常:", str(e.__cause__))

在上述代码中,我们首先定义了一个名为divide的函数。该函数尝试计算两个数的商,并在除数为零时抛出ValueError异常。在异常处理程序中,我们又抛出了一个新的ValueError异常,这样异常就会传递到调用该函数的地方。

在主程序中,我们调用divide函数,并捕获抛出的ValueError异常。通过捕获异常,我们可以处理异常或者获取异常的相关信息。

接下来,我们定义了一个名为calculate的函数,在其中调用了divide函数。在calculate函数内部,我们又捕获了ValueError异常,并重新抛出一个RuntimeError异常。这样,异常就会在多层级之间传递。

最后,在主程序中,我们捕获了RuntimeError异常,并打印出异常信息。通过__cause__属性,我们还可以访问原始的异常对象。

通过异常的传递性,我们可以在不同层级的代码中捕获和处理异常,从而实现对错误情况的处理和控制流程的管理。

四、Python之模块的概念和导入

在Python中,模块是一个包含了一些定义和语句的文件。通过使用模块,我们可以将代码分成多个文件,使得代码更加模块化、结构清晰,并且可以在不同的程序中共享和重复使用。

下面是使用Python代码详细讲解模块的概念和导入的例子:

假设我们有两个文件:math_operations.pymain.py

# math_operations.pydef add(x, y):return x + ydef subtract(x, y):return x - y
# main.py# 1. 导入整个模块
import math_operationsresult = math_operations.add(5, 3)
print(result)result = math_operations.subtract(8, 2)
print(result)# 2. 导入特定函数
from math_operations import add, subtractresult = add(5, 3)
print(result)result = subtract(8, 2)
print(result)# 3. 给模块指定别名
import math_operations as moresult = mo.add(5, 3)
print(result)result = mo.subtract(8, 2)
print(result)# 4. 导入所有函数
from math_operations import *result = add(5, 3)
print(result)result = subtract(8, 2)
print(result)

在上述代码中,math_operations.py文件是一个模块,其中定义了两个函数:addsubtract。这些函数可以在其他文件中进行导入和使用。

main.py文件中,我们演示了不同的模块导入方式:

  1. 使用import语句导入整个math_operations模块。这样就可以通过math_operations.addmath_operations.subtract调用模块中的函数。

  2. 使用from ... import语句导入指定的函数。这样就可以直接使用addsubtract调用这些函数,无需加上模块名前缀。

  3. 使用import ... as语句给模块指定别名。这样就可以使用mo.addmo.subtract调用模块中的函数。

  4. 使用from ... import *语句导入模块中的所有函数。这样就可以直接使用addsubtract调用这些函数,无需加上模块名前缀。

通过模块的概念和导入,我们可以将代码组织得更好、更易于管理,并且可以重复使用已经定义好的功能。模块化的设计使得代码更加模块化、可读性更强,并且方便多人协作开发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyGWalker:Python中的Tableau,数据可视化变得如此简单!

文章目录 1介绍2 安装3 使用4 将数据可视化导出为代码5 总结 1介绍 在数据分析和可视化的领域,Tableau凭借其强大的功能和直观的界面,一直以来都是专业人士的首选工具。然而,对于许多用户而言,Tableau的封闭性和高昂的成本使其难…

从0到1:Java构建高并发、高可用分布式系统的实战经验分享

文章目录 引言基础架构选择与设计微服务架构分布式储存与计算 高并发处理策略异步处理与消息队列并发控制与资源隔离 高可用性设计与故障恢复冗余与集群化容错与自我修复监控与运维自动化 引言 随着互联网业务的快速发展和技术迭代升级,作为Java架构师,…

【MySQL】对数据库的操作以及数据库备份相关操作

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

有ai写文案的工具吗?分享5款好用的工具!

在数字化时代,人工智能(AI)已渗透到我们生活的方方面面,包括内容创作领域。AI写文案的软件以其高效、便捷的特点,正逐渐受到广大内容创作者、营销人员、甚至普通用户的青睐。本文将为您盘点几款热门的AI写文案软件&…

NetSuite 固定资产Write-Off的撤回操作

之前我们有说到如果是Sale了固定资产后发现有误,需要撤回操作该如何处理。这篇文章来补充一下,如果是误Write-Off了一个固资该如何处理,其逻辑与Sale的撤回基本一致,但是少了删除Sale Invoice的步骤。 我们用一个实际的例子来进行…

突破编程_C++_C++11新特性(右值引用与移动语义)

1 右值引用 1.1 右值引用的基本概念 右值引用是 C11 中引入的一个关键特性,它允许程序员显式地将一个表达式标记为右值,从而可以利用移动语义进行优化。在深入探讨右值引用的基本概念之前,首先需要理解左值和右值的概念。 在 C 中&#xf…

HTML5:七天学会基础动画网页(end)

想了想还是有一点东西还没说,当然这块内容也比较简单,就是当我们有一段完整素材时,如下: 我在网上随便找的素材,当然我们平时在使用素材时要注意尊重他人的著作权,不管是字体图片还是别的,不然后面不小心侵…

字符串筛选排序 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 输入一个由n个大小写字母组成的字符串, 按照 ASCII 码值从小到大的排序规则,查找字符串中第 k 个最小ASCII 码值的字母(k>=1) , 输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0) 。…

NS3 使用 waf 工具添加外部库

我最近在写 NS3 的时候想要把他人写好的外部库添加到 NS3 中一起编译&#xff0c;在 Linux 系统中&#xff0c;添加外部库往往通过编译选项 -l<外部库名> 来添加&#xff0c;而在大型项目中往往需要把外部库写到 Makefile 文件中通过 make 来编译。奈何 NS3 的早期版本都…

org.springframework.beans.factory.BeanNotOfRequiredTypeException异常处理

目录 一、问题详情 二、示例代码 三、原因分析 四、解决方案 一、问题详情 在本地启动项目的时候,突然报了如下错误,导致整个项目启动失败了。 org.springframework.bea

【蓝桥杯备赛】Day15:递推与递归(倒计时23天)

题目1:题目 2335: 信息学奥赛一本通T1422-活动安排 设有n个活动的集合E{1,2,…,n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;如演讲会场等&#xff0c;而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi…

【微信小程序】零基础快速入门

微信小程序 小程序与普通网页开发的区别 1 运行环境不同 网页运行在浏览器环境中 小程序运行在微信环境中2 API 不同 由于运行环境的不同,所以在小程序中,无法调用 DOM 和 BOM 的API 但是,小程序中可以调用微信环境提供的各种 API,例如:地理位置、扫码、支付等等3 开发模…

【C++】CC++内存管理

目录 一、C/C内存分布二 、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free三、 C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型3.3 长度域 四、operator new与operator delete函数五、new和delete的实现原理5.1 内置类型5.2 自定义类…

Lombok:@Singular集合元素灵活添加利器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、Singular介绍 二、使用示例 三、注意事项 四、使用场景 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Singular介绍 Sing…

【LAMMPS学习】三、构建LAMMPS(7)具有额外构建选项的软件包

3. 构建 LAMMPS 3.7.具有额外构建选项的软件包 当使用某些包进行构建时&#xff0c;除了Build_package页面上描述的步骤之外&#xff0c;可能还需要额外的步骤。 ​ 对于CMake构建&#xff0c;可能有额外的可选或必需的变量要设置。对于使用make进行构建&#xff0c;可能需…

【C语言】基本语法知识C语言函数操作符详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;C语言_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.基本语法 1.1 代码解释 1.1.1 main()主函数 1.1.2 int 1.1.3 { } 1.1.4 printf()库函数 1.1.5 stdio.h头文件 1.2 C语言的…

ThreeJs的音频和位置音频

Threejs的场景有时候需要引入声音&#xff0c;比如下雨声音&#xff0c;撞击声音等&#xff0c;这需要用到Threejs的两个类Audio和PositionalAudio&#xff0c;第一个Audio是普通的声音&#xff0c;比如下雨&#xff0c;在整个场景中听到的都是下雨的声音&#xff0c;而且每个位…

[C语言]——操作符详解

目录 一.操作符的分类 二.二进制和进制转换 1.二进制转十进制 2.二进制转八进制和十六进制 2.1二进制转八进制 2.2二进制转十六进制 三.原码、反码、补码 四.移位操作符 1.左移操作符 2.右移操作符 五.位操作符&#xff1a;&、|、^、~ 练习1&#xff1a;编写代码实…

3d纸模型图纸制作方法---模大狮模型网

制作3D纸模型图纸通常需要按照以下步骤进行&#xff1a; 选择设计模型&#xff1a; 首先确定你想要制作的3D纸模型的设计&#xff0c;可以是建筑物、动物、交通工具等各种形式的模型。 绘制设计图纸&#xff1a; 使用计算机辅助设计软件(如AutoCAD、SketchUp)或手工绘图工具…

jsp基本语法

jsp的基本语法:java代码放在<% %>之间 jsp的变量定义:局部变量定义放在<% %>之间&#xff0c;全局变量放在<%! %>之间 jsp的表达式&#xff1a;把值显示在网页上&#xff0c;语法是:<%表达式> <% page language"java" contentType&quo…