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

Python异常,模块与包

文章目录

  • 1.Python异常
    • 1.1 异常的捕获方法
    • 1.2 异常的else方法
    • 1.3 异常的finally方法
    • 1.4 异常的传递
  • 2.Python模块
    • 2.1 Python模块的导入
    • 2.2 自定义模块
  • 3.Python包
    • 3.1 Python自定义包
      • 3.1.1 导入包
    • 3.2 第三方包
      • 3.2.1 安装第三方包

1.Python异常

当检测到错误时,Python解释器就无法继续执行,反而出现了一些错误提示,叫做异常。

1.1 异常的捕获方法

捕获异常的作用:提前假设某处会出现异常,做好提前准备,当真正出现异常的时候,有后续的手段。

  1. 捕获异常的基本操作

语法:
try:
 可能发生错误的代码
except:
 如果出现异常执行的代码

try:f = open("C:/Users/86183/Desktop/python assignment/marl_framework/bill.txt","r")
except:print("出现异常,文件不存在")
  1. 捕获指定的异常

语法:
try:
 print(name)
except NameError as e:
 print('name变量名称未定义错误‘)

try:print(name)
except NameError as e:print("出现了变量未定义的异常")
  1. 捕获多个异常

语法:
try:
 print(1/0)
except (NameError,ZeroDivisionError):
 print(‘ZeroDivision错误…’)

try:print(name)
except (NameError,ZeroDivisionError) as e:print("出现了变量未定义的异常或者除以0的异常错误")
  1. 捕获所有异常

语法:
try:
 … …
except Exception as e:
 print("出现异常了“)

try:1/0
except Exception as e:print("出现异常")

1.2 异常的else方法

else表示没有异常时执行的代码。

语法:
try:
 print(1)
except Exception as e:
 print(e)
else:
 print('程序没发生异常’)

try:print('你好')
except Exception as e:print("出现异常")
else:print('No Error')

1.3 异常的finally方法

无论如何都要执行的操作。

语法:
try:
 print(1)
except Exception as e:
 print(e)
else:
 print('程序没发生异常’)
finally:
 f.close()

try:f = open("D:/123.txt","r")
except Exception as e:print("出现异常")f = open("D:/123.txt", "w")
else:print('No Error')
finally:f.close()

1.4 异常的传递

在多个函数中捕获异常,当所有函数都没有捕获到异常的时候,程序就会报错。
在这里插入图片描述

def func1():print("func1 开始执行")num = 1/0print("func1 结束执行")def func2():print("func2 开始执行")func1()print("func2 结束执行")def main():try:func2()except Exception as e:print(f"出现异常,异常信息是{e}")main()

2.Python模块

2.1 Python模块的导入

Python模块是一个Python的文件,以.py结尾,模块能定义函数,类和变量等。

语法:
[from 模块名] import [模块|类|变量|函数|*] [as 别名]

在这里插入图片描述

  1. import模块名
    导入一个模块。

语法:
import 模块名
import 模块名1,模块名2
模块名.功能名()

import timetime.sleep(200)
  1. from 模块名 import 功能名
    使用import导入某个模块的某个功能。

语法:
from 模块名 import 功能名
功能名()

from time import sleepsleep(2)
  1. from 模块名 import *
    使用from导入模块中的全部功能

语法:
from 模块名 import *
功能名()

from time import *sleep(2)
  1. as 别名定义

语法:

  1. 模块定义别名
    import 模块名 as 别名
  2. 功能定义别名
    from 模块名 import 功能 as 别名
import time as tt.sleep(2)
from time import sleep as ss(2)

2.2 自定义模块

自己定义一个模块,然后进行引用。
在这里插入图片描述
当导入多个模块时,且模块内有同名功能,当调用这个功能时,调用的是后面导入模块的功能。
在这里插入图片描述

  1. _main_变量
    这条语句可以保证在自己写的模块内部调用函数程序,并进行执行。而外部模块调用该模块时,不会执行该模块内部的调用函数操作。
if __name__ == '__main__':
  1. _all_变量
    如果一个模块中有_all_变量,当使用from xxx import *导入时,只能导入这个列表中的元素。
    在这里插入图片描述

3.Python包

包就是一个文件夹,在该文件夹下包含一个_init_.py文件,该文件可用于包含多个模块文件。包的本质依然是模块。

3.1 Python自定义包

步骤:

  1. 新建包my_package
  2. 新建包内模块:my_module1和my_module2
  3. 模块内代码如下:
    在这里插入图片描述

3.1.1 导入包

  1. 方式1:

import 包名.模块名
包名.模块名.目标

import my_package.my_module1
import my_package.my_module2my_package.my_module1.my_function1()
my_package.my_module2.my_function2()
from my_package import my_module1
from my_package import my_module2my_module1.my_function1()
my_module2.my_function2()
  1. 方式2:

from 包名 import *
模块名.目标

必须在_init_.py文件中添加_all_ = [],控制允许导入的模块列表
在这里插入图片描述

3.2 第三方包

3.2.1 安装第三方包

在命令提示符程序中输入:pip install 包名称
若上述指令安装太慢,可以用如下指令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称

练习:
在这里插入图片描述
在这里插入图片描述

def str_reverse(s):"""功能是将字符串完成反转操作:param s: 即将被反转的字符串:return: 反转后的字符串"""return s[::-1]def substr(s,x,y):"""功能是按照给定的下标完成给定的字符串切片操作:param s: 即将被切片的字符串:param x: 切片的开始下标:param y: 切片的结束下标:return: 切片后的字符串"""return s[x:y]if __name__ == '__main__':print(str_reverse("Python"))print(substr("Python",1,3))
def print_file_info(file_name):"""功能是将给定的文件内容输出到控制台中:param file_name: 即将读取的文件路径:return: None"""global ftry:f = open(file_name, 'r')content = f.read()print(f"文件的全部内容如下:{content}")except Exception as e:print(f"程序出现异常,原因是{e}")finally:f.close()def append_to_file(file_name, data):"""功能是将指定的数据追加到指定的文件中:param file_name:指定的文件路径:param data:要追加写入的数据:return:None"""global ftry:f = open(file_name, 'a')f.write(data)except Exception as e:print(f"程序出现异常,原因是{e}")finally:f.close()if __name__ == '__main__':print_file_info('C:/Users/86183/Desktop/python  assignment/marl_framework/bill.txt')append_to_file('C:/Users/86183/Desktop/python  assignment/marl_framework/bill.txt','\n你好')
import my_utils.str_util
import my_utils.file_utilprint(my_utils.str_util.str_reverse("Python"))
print(my_utils.str_util.substr("Python",1,3))print_file_info('C:/Users/86183/Desktop/python  assignment/marl_framework/bill.txt')
append_to_file('C:/Users/86183/Desktop/python  assignment/marl_framework/bill.txt', '\n你好')
http://www.dtcms.com/a/298012.html

相关文章:

  • 电厂液压执行器自动化升级:Modbus TCP与DeviceNet的协议贯通实践
  • 从热点到刚需:SmartMediaKit为何聚焦B端视频系统建设?
  • 「iOS」——GCD其他方法详解
  • 自然语言处理技术应用领域深度解析:从理论到实践的全面探索
  • Unity 多人游戏框架学习系列十一
  • http-proxy-middleware MaxListenersExceededWarning
  • [2025CVPR-图象分类方向]SPARC:用于视觉语言模型中零样本多标签识别的分数提示和自适应融合
  • 【STM32】FreeRTOS任务的挂起与解挂(四)
  • 学习游戏制作记录(克隆技能)7.25
  • 踩坑记录:因版本不匹配导致 Boost 1.85 编译失败的完整解决过程
  • 二层隧道协议(PPP、PPTP、L2TP)
  • STM32的WI-FI通讯(HAL库)
  • 2025-07-25设置使用权限N次内
  • 《计算机组成原理与汇编语言程序设计》实验报告一 基本数字逻辑及汉字显示
  • OpenGLRender开发记录(二): 阴影(shadowMap,PCF,PCSS)
  • 升级目标API级别到35,以Android15为目标平台(三 View绑定篇)
  • Fluent自动化仿真(TUI命令脚本教程)
  • SQL Server数据库
  • 破局与重构:King’s LIMS 引领电子行业实验室智能化转型
  • 从kHz到GHz:晶振频率范围如何决定其应用场景
  • 打破渠道壁垒:SEO+ASO协同作战实现用户获取量翻倍
  • Spring Cloud Gateway 服务网关
  • Docker 实战大纲
  • HC32 睡眠
  • SpringBoot整合Liquibase提升数据库变更的可控性、安全性、自动化程度(最详细)
  • Claude Code 基于 VUE + KonvaJS 实现海报生成器(附源码)
  • 基于springboot的候鸟监测管理系统
  • 杂谈:前端开发中的常见问题
  • App拉起:唤醒即达,告别繁琐操作
  • C++实战:数据标准化高效实现