
文章目录前言一、Python 异常处理1.1 什么是异常1.2 六种异常捕获方式1.3 常见异常类型1.4 异常的传递二、Python 模块2.1 什么是模块2.2 五种模块导入方式2.3 自定义模块2.4 __main__ 变量的作用2.5 __all__变量的作用三、Python 包3.1 什么是包3.2 导入包的三种方式3.3 第三方包的安装四、总结前言一、Python 异常处理1.1 什么是异常异常当 Python 解释器检测到错误时程序无法继续正常执行抛出错误提示信息这就是异常Exception俗称 BUG。为什么要捕获异常提前预判可能出错的代码准备备用逻辑。防止程序因为一个小错误而直接崩溃退出。提升用户体验可以给出友好的错误提示或进行重试。1.2 六种异常捕获方式捕获常规异常所有异常try:# 可能出错的代码fopen(test.txt,r,encodingutf-8)except:# 发生异常时执行print(程序出现异常切换为写模式)fopen(test.txt,w,encodingutf-8)注意这种方式会捕获所有异常但无法获取具体错误信息不推荐在生产中直接使用。捕获指定异常try:print(name)# name 未定义exceptNameErrorase:# 注意末尾必须有冒号print(捕获到 NameError 异常)print(e)捕获多个异常元组形式try:print(name)print(1/0)except(NameError,ZeroDivisionError)ase:print(捕获到变量未定义或除以零异常)print(e)一旦try中发生第一个异常程序会立刻跳转到except后续代码不再执行。捕获所有异常使用 Exception 基类try:fopen(missing.txt,r,encodingutf-8)print(1/0)exceptExceptionase:print(捕获到任意异常,e)Exception是绝大多数内置异常的父类能够捕获常见的业务异常但不包括KeyboardInterrupt、SystemExit等系统级异常。try … except … elseelse中的代码仅在try没有发生任何异常时执行。try:print(Hello)exceptExceptionase:print(出错了,e)else:print(没有异常执行 else 代码)try … except … else … finallyfinally中的代码无论是否发生异常都会执行常用于释放资源关闭文件、数据库连接等。try:fopen(data.txt,r,encodingutf-8)exceptExceptionase:print(文件打开失败,e)else:print(读取数据成功)finally:print(无论如何都会执行清理工作)完整的 try 结构try:# 可能出错的代码exceptSpecificErrorase:# 处理特定异常exceptExceptionase:# 处理其他所有异常else:# 没有异常时执行finally:# 总是执行资源释放1.3 常见异常类型异常类型说明示例NameError变量未定义print(a)ZeroDivisionError除以零1 / 0FileNotFoundError文件不存在open(no.txt)IndexError索引越界[1,2][5]KeyError字典键不存在{}[a]TypeError类型错误a 1ValueError值错误int(abc)AttributeError属性不存在str.fooImportError导入失败import unknown_module1.4 异常的传递异常具有传递性当函数内部发生异常且未被捕获时异常会向上层调用者传递如果最终未被捕获程序将崩溃并输出错误堆栈。deffunc01():print(func01 开始)num1/0# 抛出 ZeroDivisionErrorprint(func01 结束)# 不会执行deffunc02():print(func02 开始)func01()print(func02 结束)defmain():func02()main()# 输出异常从 func01 → func02 → main → 最终崩溃二、Python 模块2.1 什么是模块模块Module一个以.py结尾的 Python 文件。模块中可以定义函数、类和变量也可以包含可执行代码。作用将功能相关的代码组织在一起方便复用和管理。大白话模块就是一个工具包里面有很多现成的功能我们可以导入使用。2.2 五种模块导入方式方式语法使用① 导入整个模块import 模块名模块名.功能()② 导入指定功能from 模块名 import 功能名功能名()③ 导入所有功能from 模块名 import *功能名()④ 导入模块并起别名import 模块名 as 别名别名.功能()⑤ 导入功能并起别名from 模块名 import 功能名 as 别名别名()示例# 方式1importtime time.sleep(2)# 方式2fromtimeimportsleep,localtime sleep(2)# 方式3不推荐易冲突fromtimeimport*sleep(2)# 方式4importtimeast t.sleep(2)# 方式5fromtimeimportsleepass s(2)2.3 自定义模块创建一个my_module01.py文件# my_module01.pydeftest_func1(a,b):print(f两数相加结果{ab})deftest_func2(a,b):print(f两数相减结果{a-b})# 调试代码仅在直接运行本文件时执行if__name____main__:test_func1(2,3)test_func2(6,3)在另一个文件中导入并使用importmy_module01 my_module01.test_func1(1,2)# 输出两数相加结果32.4__main__变量的作用当直接运行.py文件时__name__被赋值为__main__调试代码执行。当被其他文件导入时__name__被赋值为模块名如my_module01-调试代码不执行。好处可以在模块中编写测试代码但不会影响导入该模块的外部程序。2.5__all__变量的作用在模块中定义__all__列表可以控制from 模块名 import *时哪些功能被导入。# my_module01.py__all__[test_func1]# 只允许导入 test_func1deftest_func1(a,b):print(ab)deftest_func2(a,b):print(a*b)外部使用frommy_module01import*test_func1(1,2)# 正常# test_func2(1, 2) # 报错NameError因为 test_func2 未导入同名覆盖问题如果导入多个模块中存在同名函数后导入的会覆盖先导入的。frommy_module01importtest_func1frommy_module02importtest_func1 test_func1(3,4)# 实际调用的是 my_module02 中的 test_func1三、Python 包3.1 什么是包包Package一个包含__init__.py文件的文件夹用于组织多个模块。包可以让我们更好地管理大量模块按功能归类。目录结构示例my_packages1/ ├── __init__.py前后各两个下划线 ├── my_module01.py └── my_module02.py注意__init__.py是 Python 识别文件夹为包的必需文件即使内容为空也必须存在。3.2 导入包的三种方式方式1import 包名.模块名importmy_packages1.my_module01 my_packages1.my_module01.test_func1(1,2)方式2from 包名 import *需要在__init__.py中定义__all__列表控制哪些模块被导入。# my_packages1/__init__.py__all__[my_module01,my_module02]使用frommy_packages1import*my_module01.test_func1(1,2)# my_module02 也被导入方式3from 包名.模块名 import 功能frommy_packages1.my_module01importtest_func1 test_func1(10,20)3.3 第三方包的安装Python 拥有丰富的第三方库生态使用pip安装领域常用包科学计算numpy数据分析pandas可视化matplotlib,pyechartsAI/机器学习scikit‑learn,tensorflow,pytorch大数据pyspark,pyflink安装方式# 临时使用清华镜像加速pip install numpy-i https://pypi.tuna.tsinghua.edu.cn/simple/ 永久配置镜像Windows 在 C:\Users\你的用户名\pip\ 创建 pip.ini内容 [global] index-url https://pypi.tuna.tsinghua.edu.cn/simple/ 之后直接使用 pip install 包名 四、总结知识模块核心要点异常处理try‑except‑else‑finally 结构、6 种捕获方式、异常传递性、在入口统一捕获模块5 种导入方式、自定义模块、__main__用于调试、__all__控制 import * 行为包带__init__.py的文件夹、__all__配合 from 包 import *、第三方包安装