当前位置: 首页 > 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…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

32单片机——基本定时器

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