目录

什么是异常?

异常的捕获方法:

为什么要捕获异常?

捕获异常的语法:

异常的else和finally语法:


什么是异常?

异常就是程序运行过程中出现了错误,也就是我们常说的出bug了-。-

异常的捕获方法:

为什么要捕获异常?

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

捕获异常的语法:

1.try:

可能出现异常的语句

2.except  (异常)  as  别名:

出现异常执行的语句

3.except  Exception   as  别名:

捕获所有的异常

#演示捕获异常#基本捕获语法
try:f = open('C;\\abc.txt','r',encording='utf-8')
except:print("出现异常了,因为abc文件不存在")
'''结果:出现异常了,因为abc文件不存在'''#捕获指定异常:
try:print(name)
except NameError as e:print(f"出现异常了,原因是{e}")
'''结果:出现异常了,原因是name 'name' is not defined'''如果出现了其他类型异常,则不能捕获,例如:
try:f = open('C;\\abc.txt','r',encording='utf-8')
except NameError as e:print(f"出现异常了,原因是{e}")
'''
Traceback (most recent call last):File "D:\opython工程\go-learn\5.7.py", line 1143, in <module>f = open('C;\\abc.txt','r',encording='utf-8')
TypeError: 'encording' is an invalid keyword argument for open()
'''    #捕获多个异常
try:1/0print(name)
except (NameError,ZeroDivisionError) as e:print(f"出现异常了,原因是{e}")
#未正确设置捕获异常类型,将无法捕获异常#捕获所有异常
try:1/0print(name)
except Exception as e:print(f"出现异常了,原因是{e}")
'''结果:出现异常了,原因是division by zero'''

异常的else和finally语法:

else:

没出现异常执行的语句

finally:

不管有无异常都执行后面的语句

#else在未出现异常时执行的代码
try:print(123)
except Exception as e:print(f"出现异常了,原因是{e}")
else:print("没出现异常")
'''结果
123
没出现异常
'''#无论有没有异常都执行finally后面的代码
try:print(name)
except Exception as e:print(f"出现异常了,原因是{e}")
finally:print("没出现异常")
'''结果:
出现异常了,原因是name 'name' is not defined
没出现异常
'''

异常的传递性:

在 Python 中,异常的传递性(也称为异常的传播)是指当异常在函数或方法中被触发但未被捕获时,它会自动向上(向调用栈的上层)传递,直到被捕获处理或导致程序终止。

碰到异常代码会终止

def func1():print("func1开始执行")1/0print("func1结束执行")def func2():print("func2开始执行")func1()print("func2结束执行")
def main():func2()main()

在调用函数时,仍然可以使用try和except接收异常

def func1():print("func1开始执行")1/0print("func1结束执行")def func2():print("func2开始执行")func1()print("func2结束执行")def main():try:func2()except Exception as e:print(f"出错了,原因是{e}")main()

模块的概念和导入:

什么是模块?

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

如何导入?

1. import  模块名   :直接导入

2.from  模块  import  功能  : 导入模块的指定功能

3.as可以指定别名

#演示Python的模块导入#使用import导入time模块使用sleep功能(函数)
import time
print("吃了吗")
time.sleep(3)
print("吃了")#使用from导入time的sleep功能(函数)
from time import sleep
print("吃了吗")
sleep(3)
print("吃了")#使用*导入time模块的全部功能
from time import *
print("吃了吗")
sleep(3)
print("吃了")
print(localtime())#使用as给模块改名
import time as f
print("吃了吗")
f.sleep(3)
print("吃了")#使用as给模块的特定功能改名
from time import sleep as sl
print("吃了吗")
sl(3)
print("吃了")

自定义python包:

什么是Python的包?

    包就是一个文件夹,里面可以存放许多Python的模块(代码文件),通过包,在逻辑上将一批模块归为一类,方便使用。

如何自定义:

1:创建一个package包

2:创建一个python文件

3:在此文件中编写函数功能

4:可以像调用模块的那样调用mod1中的函数

import mypackage.mod1
或者
from mypackage.mod1 import ppp
ppp()#结果是123

all 变量的作用

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

在_init_文件中定义all变量,可以控制 import*能够导入的内容,只有all变量中的函数可以被导入

如何导入第三方pyhton包:

安装成功后可以import导入使用

方法一:使用cmd命令提示符

格式:

pip  install  包名   

pip  install  -i    https://pypi.tuna.tsinghua.edu.cn/simple  包名  :从国内镜像站下载速度更快

方法二:pycharm中安装包

 

综合案例:

------------------这是str_util.py的代码-----------------------------------def str_reserve(s):s=input("请输入一个字符串\n")s=s[::-1]print(f"这个字符串反转后是:\n{s}")def str_sub():s = input("请输入一个字符串\n")x=int(input("请输入起始下标\n"))y=int(input("请输入终止下标\n"))s_sub=s[x:y]print(s_sub)------------------这是file_util.py的代码-----------------------------------def print_file_info():name=input("请输入文件名\n")f= Nonetry:f=open(f"{name}",'r',encoding='utf-8')print(f)except:print("出现异常了,因为文件不存在\n")finally:if f is not None:f.close()def append_to_file():f = Nonename = input("请输入文件名\n")try:f = open(f"{name}", 'a', encoding='utf-8')data = input("请输入追加内容\n")f.write(f"{data}\n")except:print("出现异常了,因为文件不存在\n")finally:if f is not None:f.close()------------------这是代码调用测试-----------------------------------import mypackage.str_util
import mypackage.file_utilstr_sub()
str_reserve()print_file_info()
append_to_file()

这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

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

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

相关文章

区块链密码学简介

区块链密码学简介 一、对称密码算法 概述 对称密码算法的主要特点是使用相同的密钥进行加密和解密。这类算法根据其加密方式大致可以分为两类:流密码和分组密码。区块链技术主要采用分组密码。流密码以数据流的形式逐位或逐字节加密,而分组密码则将数据分成固定大小的块进行…

GridKernalGateway

GridKernalGateway 是 Apache Ignite 架构中一个关键的安全与状态管理组件&#xff0c;它的作用是 “在公共 API 和内部内核&#xff08;kernal&#xff09;之间建立安全、可控的访问通道”。 我们可以把它理解为一个 “门卫 状态哨兵”&#xff0c;确保外部调用不会在 Ignite…

MySQL索引、B+树相关知识总结

MySQL索引、B树相关知识汇总一、有一个查询需求&#xff0c;MySQL中有两个表&#xff0c;一个表1000W数据&#xff0c;另一个表只有几千数据&#xff0c;要做一个关联查询&#xff0c;如何优化&#xff1f;1、为关联字段建立索引2、小表驱动大表二、b树和b树的区别1、更高的查询…

Java学习进阶 -- 泛型的继承和通配符及综合练习

首先&#xff0c;泛型不具备继承性&#xff0c;但是数据具备继承性1.核心概念解析泛型不具备继承性即使类型A是类型B的子类&#xff0c;Generic<A>也不是Generic<B>的子类这是Java泛型的类型安全设计&#xff0c;防止不安全的类型转换数据具备继承性泛型容器中的元…

如何实现在多跳UDP传输场景,保证单文件和多文件完整传输的成功率?

如何实现在多跳UDP传输场景&#xff0c;保证单文件和多文件完整传输的成功率&#xff1f; 一、前言 UDP&#xff08;User Datagram Protocol&#xff09;是一个轻量、无连接的传输协议&#xff0c;广泛用于低延迟、高吞吐的应用中&#xff0c;如视频流、实时游戏等。然而&…

【Spring IoC 核心实现类详解:DefaultListableBeanFactory】

Spring IoC 核心实现类详解&#xff08;源码原理&#xff09;作为 Spring 的灵魂&#xff0c;IoC 容器&#xff08;Inversion of Control&#xff09;是整个框架的核心。 那么 IoC 的“心脏”到底是哪个类&#xff1f;它是怎么管理和装配 Bean 的&#xff1f;本文将从源码层面深…

为什么开启JWT全局认证后,CSRF失败会消失?

这是因为 JWT认证与CSRF校验的设计逻辑完全不同&#xff0c;当全局启用JWT认证后&#xff0c;Django的CSRF校验会被“绕过”或不再生效&#xff0c;具体原因如下&#xff1a; 核心原因&#xff1a;JWT认证不依赖Cookie&#xff0c;无需CSRF保护 1. CSRF的作用场景 CSRF攻击的前…

宝龙地产债务化解解决方案二:基于资产代币化与轻资产转型的战略重构

一、行业背景与代币化创新趋势1.1 房地产债务危机现状宝龙地产&#xff08;01238.HK&#xff09;截至2024年中债务总额达584亿元&#xff0c;其中50.7%为一年内到期债务&#xff0c;但现金储备仅89.47亿元&#xff0c;短期偿债覆盖率不足30%。2025年2月境外债务重组计划因债权人…

深信服GO面试题及参考答案(下)

Kubernetes 与容器 Kubernetes(简称 K8s)是容器编排平台,而容器是轻量级的虚拟化技术,两者紧密关联但定位不同,容器是 K8s 管理的核心对象,K8s 为容器提供了完整的生命周期管理、扩展和运维能力。 容器技术(如 Docker)通过 Linux 命名空间(Namespace)、控制组(CGro…

RAGFoundry:面向检索增强生成的模块化增强框架

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 1. 背景与动机 大型语言模型&#xff08;LLMs&#xff09;存在 知识静…

(第十期)HTML基础教程:文档类型声明与字符编码详解

&#xff08;第十期&#xff09;HTML基础教程&#xff1a;文档类型声明与字符编码详解 前言 在使用VS Code等现代编辑器生成HTML页面时&#xff0c;你会发现自动生成的代码中多了一些看似陌生但又非常重要的标签。这些标签不是多余的&#xff0c;而是现代Web开发的标准配置。…

OpenAPI(Swagger3)接口文档自定义排序(万能大法,支持任意swagger版本)

前置参考文档 基于OpenAPI(Swagger3)使用AOP技术&#xff0c;进行日志记录 使用SpringAOP的方式修改controller接口返回的数据 SpringBoot3集成OpenAPI3(解决Boot2升级Boot3) 总结一句话&#xff1a;既然没办法去通过各种方法或者官方的接口去修改接口顺序&#xff0c;那我们就…

vue3上传的文件在线查看

1、npm install vue-office/pdf vue-demi 安装依赖2、npm install vue-office/excel vue-demi 安装依赖3、npm install vue-office/docx vue-demi 安装依赖4、编写一个通用组件&#xff0c;现在只支持 .docx,.xlsx,.pdf 格式的文件&#xff0c;其他文件渲染不成功<temp…

深度学习中基于响应的模型知识蒸馏实现示例

在 https://blog.csdn.net/fengbingchun/article/details/149878692 中介绍了深度学习中的模型知识蒸馏&#xff0c;这里通过已训练的DenseNet分类模型&#xff0c;基于响应的知识蒸馏实现通过教师模型生成学生模型&#xff1a; 1. 依赖的模块如下所示&#xff1a; import arg…

【数据可视化-82】中国城市幸福指数可视化分析:Python + PyEcharts 打造炫酷城市幸福指数可视化大屏

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

TikTok网页版访问障碍破解:IP限制到高效运营的全流程指南

在跨境电商与社媒运营的数字化浪潮中&#xff0c;TikTok网页版因其多账号管理便捷性、内容采集高效性等优势&#xff0c;成为从业者的核心工具&#xff0c;然而“页面空白”“地区不支持” 等访问问题却频繁困扰用户。一、TikTok网页版的核心应用场景与技术特性&#xff08;一&…

spring的知识点:容器、AOP、事物

一、Spring 是什么? Spring 是一个开源的 Java 企业级应用框架,它的核心目标是简化 Java 开发。 它不是单一的工具,而是一个 “生态系统”,包含了很多模块(如 Spring Core、Spring Boot、Spring MVC 等),可以解决开发中的各种问题(如对象管理、Web 开发、事务控制等)…

HTML ISO-8859-1:深入解析字符编码标准

HTML ISO-8859-1:深入解析字符编码标准 引言 在HTML文档中,字符编码的选择对于确保网页内容的正确显示至关重要。ISO-8859-1是一种广泛使用的字符编码标准,它定义了256个字符,覆盖了大多数西欧语言。本文将深入探讨HTML ISO-8859-1的原理、应用及其在现代网页开发中的重要…

【计算机网络 | 第4篇】分组交换

文章目录前言&#x1f95d;电路交换&#x1f34b;电路交换技术的优缺点电路交换的资源分配机制报文交换&#x1f34b;报文交换技术的优缺点存储转发技术分组交换&#x1f426;‍&#x1f525;分组交换的过程分组交换解决的关键问题传输过程的关键参数工作原理分组传输时延计算网…

LLM - AI大模型应用集成协议三件套 MCP、A2A与AG-UI

文章目录1. 引言&#xff1a;背景与三协议概览2. MCP&#xff08;Model Context Protocol&#xff09;起源与动因架构与规范要点开发实践3. A2A&#xff08;Agent-to-Agent Protocol&#xff09;起源与动因架构与规范要点开发实践4. AG-UI&#xff08;Agent-User Interaction P…