mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
560 words
1 minute
模块与模块化编程
2026-10-16
2026-10-18

1. Module 模块#

1.1 概念#

  • 大型 Python 程序以模块和包的形式组织,解决随着代码规模变大而带来的组织、复用和命名冲突问题。
  • 任何 Python 源文件都能以模块的形式使用。模块是包含 Python 定义和语句的文件,以 .py 为后缀的文件名就是模块名称。

1.2 import 语句#

  • 使用 import 语句加载模块。
  • 当导入模块时,将执行:
    • 创建新的命名空间。
    • 在新创建的命名空间执行模块中的代码。
    • 在调用函数中创建名称来引用模块的命名空间。

1. 导入模块#

  • 如果要在其他程序中使用模块,有以下三种导入方式:
    • 导入整个模块
    • 导入模块中的特定函数
    • 导入模块中的所有函数
import torch
from torch import nn
from torch import *

2. 模块别名#

  • 利用 as 给导入模块一个别名,简化代码中的调用写法。
import numpy as np

3. 单独运行模块#

  • 如果要单独测试模块,可以在模块中添加以下代码,就可以既用作脚本,也可用作可导入模块:
# 检查模块是否以程序形式运行
if __name__ == "__main__":
# 是
statements
else:
# 否,以模块形式导入
statements

2. Packages 包#

  • 可以理解为一组模块的容器,并用 Package.Module 的方式构建命名空间。
  • 包目录下必须有 __init__.py 文件,Python 才会将包含该文件的目录视为包(Package)。
    • __init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。
  • 包中也可以有子包,每个子包中同样有 __init__.py 文件。

2.1 定义包#

  • 在包目录下创建 __init__.py 文件,定义一个包。
  • 第一次导入包的任意部分,都会执行 __init__.py 中的代码。
  • __init__.py 文件可以为空,也可以包含初始化代码。

2.2 包索引#

  • 直接采用 from 包 import * 时,可能会引用一些不需要的内容,或者导致加载速度过慢。
  • 可以通过在 __init__.py 中定义一个 __all__ 列表,来指定用 * 时应导入的模块名称列表。
__all__ = ["first", "second", "third"]

2.3 包中导入#

  • 当子模块想要导入同一个包的其他子模块时,使用相对导入。
from . import first
from ..number import one
Share

If this article helped you, please share it with others!

模块与模块化编程
https://kieas.cn/posts/python-modules/
Author
Kieas
Published at
2026-10-16
License
CC BY-NC-SA 4.0

Some information may be outdated

Table of Contents