当前位置:首页>python>Python学习之【异常处理与模块包的奇妙之旅】

Python学习之【异常处理与模块包的奇妙之旅】

  • 2026-10-11 08:40:30
Python学习之【异常处理与模块包的奇妙之旅】
一、Python学习的新征程
亲爱的 Python 学习者们,在 Python 的学习路上,我们已经走过了四节课程的时光,每节内容都有新的收获和成长。本节内容,我们将踏入两个重要的领域——异常处理和模块与包。这两个部分就像是 Python 编程世界里的两把利器,掌握它们,能让我们的代码更加健壮、灵活。接下来,就让我们一起开启第五节内容的学习之旅吧!
二、异常处理:给代码加上 “ 防护盾 ”
1.常见异常与 try - except 语句
在 Python 编程中,异常就像是隐藏在代码里的 “ 小怪兽 ” ,随时可能跳出来捣乱。比如,当我们进行除法运算时,如果除数为零,就会触发ZeroDivisionError异常;当我们尝试打开一个不存在的文件时,会遇到FileNotFoundError 异常。
不过别担心,try - except 语句就是我们对付这些“小怪兽”的 “ 防护盾 ” 。下面是个简单的例子:
2.捕获 ZeroDivisionError 异常
try:    result = 10 / 0except ZeroDivisionError:    print("哎呀,除数不能为零呢!")
在这个例子中,try 块里的代码尝试进行除法运算,当遇到 ZeroDivisionError 异常时,程序会立即跳转到 except 块,执行其中的代码,这样就避免了程序因为异常而崩溃。
3.捕获 FileNotFoundError 异常
try:    withopen('nonexistent_file.txt', 'r') asfile:        content = file.read()except FileNotFoundError:    print("文件未找到!")
这里尝试打开一个不存在的文件,会引发 FileNotFoundError异常,except块捕获该异常并给出相应提示。
4.捕获多种异常
有时候,代码可能会出现多种不同类型的异常。我们可以使用多个 except子句来捕获不同类型的异常,就像这样:
try:    file = open("nonexistent_file.txt", "r")    result = 10 / 0except FileNotFoundError:    print("文件没找到呀!")except ZeroDivisionError:    print("除数不能为零哦!")
这样,无论出现哪种异常,我们都能有针对性进行处理。
5.通用异常捕获
try:    num = 1 / 0except Exception as e:    print(f"发生异常: {e}")
Exception 是所有异常类的基类,使用 except Exception as e可以捕获所有类型的异常,并通过e获取异常信息。
6.主动抛出异常:raise语句
除了捕获异常,我们还可以使用 raise语句主动抛出异常。这在我们需要自定义错误情况时非常有用。比如:
def calculate_age(year):    if year > 2024:        raise ValueError("输入的年份不能大于当前年份!")    return 2024 - yeartry:    age = calculate_age(2025)except ValueError as e:    print(e)
在这个例子中,如果输入的年份大于当前年份,函数会主动抛出 ValueError异常,提醒用户输入有误。
三、模块和包:代码的 “ 收纳盒 ”
1.模块和包的概念
  • 模块:模块是一个包含 Python 代码的文件,文件扩展名为 .py。模块可以定义函数、类和变量,并且可以被其他 Python 程序导入和使用。
  • 包:包是一个包含多个模块的目录,目录中必须包含一个名为__init__.py的文件(在 Python 3.3 及以后版本中,__init__.py文件不是必需的,但为了兼容性,建议保留)。
2.创建自己的模块和包
2.1.创建模块
创建一个名为 math_utils.py 的模块文件,内容如下:
# math_utils.pydef add(a, b):    return a + bdef subtract(a, b):    return a - b
这个文件就是一个模块,定义了两个函数add和subtract。
2.2.创建包
创建一个名为my_package 的目录,在该目录下创建__init__.py文件(可以为空),再创建一个 math_utils.py文件,内容与上面的模块相同。
3.使用import语句导入模块和包
  • 导入模块
import math_utilsresult = math_utils.add(1, 2)print(result)
使用 import 语句导入 math_utils 模块,然而通过模块名调用其中的函数。
  • 导入包中的模块
from my_package import math_utilsresult = math_utils.subtract(5, 3)print(result)
使用 from...import 语句从包中导入模块,这样可以直接使用模块中的函数,而不需要通过包名和模块名来调用。
  • 导入模块中的特定函数
from math_utils import addresult = add(3, 4)print(result)
使用from...import语句直接导入模块中的特定函数,这样可以直接使用该函数,而不需要通过模块名来调用。
四、课后小练
题目描述:我们要创建一个简单的文件处理程序,同时运用异常处理和模块知识。
具体要求如下
创建模块:创建一个名为 file_utils.py 的模块,在该模块中定义两个函数:
  • read_file:该函数接受一个文件路径作为参数,尝试读取文件内容并返回。如果文件不存在,抛出 FileNotFoundError 异常;如果文件读取过程中出现其他错误,抛出 IOError 异常。
  • write_file:该函数接受文件路径和要写入的内容作为参数,尝试将内容写入文件。如果写入过程中出现错误,抛出 IOError 异常。
主程序:在主程序文件(例如 main.py)中导入 file_utils 模块,
实现以下功能:
  • 提示用户输入一个文件路径,尝试读取该文件的内容。使用 try - except 语句捕获可能出现的 FileNotFoundError 和 IOError 异常,并打印相应的错误信息。
  • 如果文件读取成功,提示用户输入要追加到文件中的内容,调用 write_file 函数将内容追加到文件末尾。同样使用 try - except 语句捕获可能出现的 IOError 异常,并打印错误信息。
代码框架
  • file_utils.py
def read_file(file_path):    try:        # 代码待补充        pass    except FileNotFoundError:        raise    except:        raise IOError("文件读取出现错误")def write_file(file_path, content):    try:        # 代码待补充        pass    except:        raise IOError("文件写入出现错误")
  • main.py
import file_utilsfile_path = input("请输入文件路径: ")try:    content = file_utils.read_file(file_path)    print("文件内容如下:")    print(content)    new_content = input("请输入要追加到文件中的内容: ")    # 代码待补充except FileNotFoundError:    print("文件未找到,请检查文件路径。")except IOError as e:    print(f"文件操作出现错误: {e}")
提示
  • 在read_file 函数中,可以使用 open 函数以只读模式打开文件,并使用 read 方法读取文件内容。
  • 在write_file 函数中,可以使用 open 函数以追加模式打开文件,并使用 write 方法将内容写入文件。
  • 在主程序中,要确保正确调用 file_utils 模块中的函数,并处理可能出现的异常。
五、总结
本节我们学习了异常处理和模块与包的知识。异常处理让我们的代码更加健壮,能够应对各种意外情况;模块和包则让我们的代码更加有条理,方便管理和复用。希望大家在实际编程中多多运用这些知识,不断提升自己的编程能力。

在接下来的学习中,我们还会探索更多 Python 的奥秘。让我们一起继续在 Python 的海洋里遨游,向着编程高手的目标前进!

如果对你有帮助,麻烦帮忙点个免费的小红心推荐也是对阿生的一种鼓励

点点关注

点点赞

最新文章

随机文章