Python基础入门 Day100 模块化编程与代码组织

67次阅读
没有评论

共计 1687 个字符,预计需要花费 5 分钟才能阅读完成。

当程序逐渐复杂时,把所有代码写在一个文件里会让结构变得混乱、难以维护。模块化编程的思想就是把代码拆分成多个文件(模块),通过合理的组织结构,让代码更加清晰、易于管理。Python 提供了灵活的模块和包机制来实现模块化编程。

  1. 什么是模块
    模块就是一个包含 Python 定义和语句的文件,扩展名通常是 .py。例如:
# 文件名:mymodule.py
def greet(name):
    return f"Hello, {name}!"

在另一个文件中,我们可以通过 import 导入并使用:

import mymodule

print(mymodule.greet("Alice"))
  1. 几种常见的导入方式
    Python 提供了多种导入模块的方式:
# 方式 1:直接导入模块
import math
print(math.sqrt(16))

# 方式 2:导入模块中的特定函数
from math import sqrt
print(sqrt(25))

# 方式 3:为模块或函数起别名
import math as m
print(m.pi)

from math import factorial as fact
print(fact(5))

使用别名可以避免模块名过长或与其他变量冲突。

  1. 自定义模块
    我们可以创建自己的模块。例如创建 calculator.py 文件:
# calculator.py
def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

然后在主程序中使用:

import calculator

print(calculator.add(3, 4))
print(calculator.multiply(2, 5))
  1. 什么是包
    包是一个包含多个模块的文件夹。文件夹中必须有一个 __init__.py 文件(可以为空,也可以写初始化代码)。
    例如文件结构:
mypackage/
    __init__.py
    module1.py
    module2.py

在代码中使用:

from mypackage import module1, module2

这样可以把功能相关的模块组织在一起,便于管理。

  1. 相对导入与绝对导入
    在包中,可以使用两种方式导入:
  • 绝对导入 :从包的根目录开始导入,例如:

    from mypackage import module1
    
  • 相对导入 :使用 ... 进行相对路径导入,例如:

    from . import module1      # 同目录
    from ..subpackage import module2  # 上一级目录
    
  1. 模块的 __name__ 属性
    每个模块都有一个特殊变量 __name__。当模块被直接运行时,__name__ == "__main__";当模块被导入时,__name__ 的值是模块名。
# test_module.py
def hello():
    print("Hello, world!")

if __name__ == "__main__":
    hello()  # 只有直接运行该文件时才会执行

这是一种常用的写法,用来区分脚本的直接执行和被导入使用。

  1. 模块搜索路径
    当我们导入一个模块时,Python 会按照以下顺序查找:
  2. 当前目录
  3. 系统环境变量 PYTHONPATH 中指定的路径
  4. Python 的标准库路径

可以通过查看 sys.path 来获取模块搜索路径:

import sys
print(sys.path)
  1. 模块化编程的好处
  • 代码复用 :常用的函数和类可以写成模块,在多个项目中重复使用。
  • 结构清晰 :将代码拆分成模块和包,便于理解和维护。
  • 协作开发 :多个开发人员可以负责不同的模块,提高效率。

总结:
Python 的模块化编程思想为我们提供了清晰的代码组织方式。通过模块和包的划分,程序结构更加清晰,逻辑层次更加分明。在后续学习中,我们还会进一步接触 Python 的标准库和第三方模块,逐步建立高效的代码组织能力。

练习与思考:

  1. 创建一个自定义模块 string_utils.py,包含字符串反转和统计单词数量的函数,并在主程序中导入使用。
  2. 创建一个包 math_tools,其中包含 arithmetic.pygeometry.py,分别实现基础运算和几何计算。
  3. 使用 __name__ == "__main__" 编写一个模块,既可以被导入使用,又可以单独运行进行测试。
正文完
 0
评论(没有评论)