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

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调用这些函数,无需加上模块名前缀。

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

相关文章:

Python从入门到精通秘籍十

一、Python之了解异常 当在Python中执行代码时,如果发生错误,就会抛出异常(Exception)。处理异常是编写健壮的代码的重要部分。Python提供了try-except语句来捕获和处理异常。 下面是使用Python代码详细讲解异常处理的例子&…...

Android:adb命令

执行adb命令的窗口如下 Mac或Linux系统里的终端窗口; window系统运行输入cmd打开的指令窗口; Android Studio 里控制下面的Terminal窗口 1. 查看已链接的设备和模拟器 adb devices -l 2. 查看Android内核版本号 adb shell getprop ro.build.version.re…...

Github基本功能和使用技巧

基础功能 创建仓库(Repository):在GitHub上创建一个新的仓库,可以通过点击页面右上角的“New”按钮开始。选择仓库的名称、描述和许可证等信息,并选择是否将仓库设置为公开或私有。 克隆仓库(Clone&#x…...

mac上系统偏好里无法停止mysql

使用强制杀死进程: sudo kill -9 pid原文:https://www.cnblogs.com/yalong/p/14136997.html 命令行也没有关闭成功:https://blog.51cto.com/u_5018054/5101645...

launchctl及其配置、使用、示例

文章目录 launchctl 是什么Unix / Linux类似的工具有什么哪个更常用配置使用常用子命令示例加载一个 launch agent:卸载一个 launch daemon:列出所有已加载的服务:启动一个服务:停止一个服务:禁用一个服务:启用一个服务: 附com.example.myagent.plist内容有趣的例子参考 launch…...

如何在Ubuntu系统搭建Excalidraw容器并实现公网访问本地绘制流程图

文章目录 1. 安装Docker2. 使用Docker拉取Excalidraw镜像3. 创建并启动Excalidraw容器4. 本地连接测试5. 公网远程访问本地Excalidraw5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 本文主要介绍如何在Ubuntu系统使用Docker部署开源白板工具Excal…...

PostgreSQL和MySQL的异同

0.前言 MySQL是一个关系数据库管理系统(DBMS),通过该系统,您可以将数据存储为包含行和列的二维表格。它是一个常用系统,支持许多 Web 应用程序、动态网站和嵌入式系统。PostgreSQL 是一个对象关系数据库管理系统&…...

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

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

docker+k8s相关面试题

dockerk8s k8s详细介绍docker的工作原理docker的组成docker与传统虚拟机的区别docker技术的三大核心概念centos镜像几个G,但是docker centos镜像才几百兆镜像的分层结构以及为什么要使用镜像的分层结构容器的copy-on-write特性,修改容器里面的内容会修改…...

力扣爆刷第101天之hot100五连刷91-95

力扣爆刷第101天之hot100五连刷91-95 文章目录 力扣爆刷第101天之hot100五连刷91-95一、62. 不同路径二、64. 最小路径和三、5. 最长回文子串四、1143. 最长公共子序列五、72. 编辑距离 一、62. 不同路径 题目链接:https://leetcode.cn/problems/unique-paths/desc…...

前端vue实现甘特图

1 什么是甘特图 甘特图(Gantt chart)又称为横道图、条状图(Bar chart)。以提出者亨利L甘特先生的名字命名,是项目管理、生产排程、节点管理中非常常见的一个功能。 甘特图内在思想简单,即以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的…...

SQLiteC/C++接口详细介绍之sqlite3类(十五)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十四) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十六) 47.sqlite3_set_authorizer 用法&#xff…...

每日三个JAVA经典面试题(十八)

1.volatile 关键字的作用 在Java中,volatile关键字用于声明变量,以确保该变量的更新对所有线程都是可见的,即当一个线程修改了一个volatile变量的值,这个新值对于其他线程来说是立即得知的。volatile关键字有两个主要作用&#x…...

RPC 和 序列化

RPC 1 RPC调用流程 1.1 clerk客户端调用远程服务 Clerk::PutAppend() raftServerRpcUtil::PutAppend() raftServerRpcUtil是client与kvserver通信的入口, 包含kvserver功能的一对一映射:Get/PutAppend,通过stub对象——raftKVRpcProctoc:…...

【原创】三十分钟实时数据可视化网站前后端教程 Scrapy + Django + React 保姆级教程向

这个本来是想做视频的,所以是以讲稿的形式写的。最后没做视频,但是觉得这篇文还是值得记录一下。真的要多记录,不然一些不常用的东西即使做过几个月又有点陌生了。 文章目录 爬虫 SCRAPYxpath 后端 DJANGO前端 REACT Hello大家好这里是小鱼&a…...

MySQL的备份

为什么要备份: 1.保证重要的数据不丢失 2.数据转移 MySQL数据库备份的方式: 1.直接拷贝物理文件 2.在可视化工具中手动导出 (1)在想要导出的表或者数据库中,右键,选择备份或导出 使用命令行导出 MyS…...

Linux 磁盘的一生

注意:实验环境都是使用VMware模拟 ​ 磁盘接口类型这里vm中是SCSI,扩展sata,ide(有时间可以看看或者磁盘的历史) ​ 总结:磁盘从有到无—类似于建房子到可以住 ————————————————————————————————————…...

C#配置连接数据库字段

在Web.config文件中 添加如下配置 <!--连接数据库字段--><connectionStrings><add name"sql" connectionString"server.;uidsa;pwd8888;databaseArticleWebSite" /></connectionStrings>...

QCOM和其他常见芯片平台术语缩写

1 QCOM 1.1 General Qualcomm: Quality Communications ALSA DCP&#xff1a;ALSA由DAI、Codec、Platform三部分组成 ALSA TLV&#xff1a;Type-Length-Value Alternative Mode: 替代模式 ANC&#xff1a;Automatic Noise Canceller ASM: Anntena Switch Module AT&#xff1a;…...

css页面布局

CSS属性书写顺序&#xff08;重点&#xff09; 建议遵循以下顺序: 布局定位属性:display / position/ float / clear / visibility / overflow&#xff08;建议display第一个写&#xff0c;毕竟关系到模式) 自身属性:width / height / margin / padding / border / background…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...