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

5Python异常处理与模块导入全指南

目录

什么是异常?

异常的捕获方法:

为什么要捕获异常?

捕获异常的语法:

异常的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.dtcms.com/a/324065.html

相关文章:

  • nginx 反向代理传递原始域名
  • Linux 管道命令及相关命令练习与 Shell 编程、Tomcat 安装
  • Spring AOP 底层实现(面试重点难点)
  • 区块链让物联网真正链接万物
  • Mybatis和MybatisPlus的对比区分理解法
  • Linux入门指南:26个基础命令全解析
  • STM32F103芯片的启动过程
  • SAP学习笔记 - 开发57 - RAP开发 Managed App RAP action 之 Accept Travel 和 Reject Travel
  • 从色彩心理学看嵌入式设备UI设计:原则、挑战与实践
  • 数据结构:栈和队列(Stack Queue)基本概念与应用
  • SpringAi 通过大模型来实现调用自己的Api
  • 复现论文《基于深度强化学习的微能源网能量管理与优化策略研究》
  • 创建降阶模型用于搅拌槽中的涡流预测
  • nestjs官网推荐typeorm而不是prisma的原因
  • 第十六讲:AVL树和红黑树
  • MySQL的隔离级别及MVCC原理解析
  • AutoGPT与AgentGPT引领自动化革命
  • openresty-lua-redis案例
  • 无须炮解,打开即是Pro版
  • 商业银行元宇宙布局现状及未来图景三维思考
  • 基于BP神经网络PID控制的电机转速控制器设计复现
  • 使用tcp ntrip 协议 接收数据报错 java.net.SocketException: Connection reset
  • Shell脚本-变量的定义方式有哪些
  • TF-IDF提取关键词(附实战案例)
  • ​LabVIEW键盘鼠标监控
  • Python 2025:最新技术趋势与展望
  • [激光原理与应用-223]:机械 - 机加厂加工机械需要2D还是3D图?
  • 红楼梦文本数据分析
  • Fish shell的abbr命令行参数介绍和Bat文件查看工具
  • 诺基亚就4G/5G相关专利起诉吉利对中国汽车及蜂窝模组企业的影响