学生实验: init.py 的作用

(date: 2025-10-24)

难度: 入门级

时长: 15 分钟

实验目的

理解 __init__.py 文件如何让Python将文件夹识别为包

实验步骤

1. 创建文件结构

my_experiment/
├── package_A/
│   ├── __init__.py
│   └── module_a.py
├── package_B/
│   └── module_b.py
└── test.py

2. 创建文件内容

module_a.py

def say_hello():
    print("Hello from package A!")

module_b.py

def say_hello():
    print("Hello from package B!")

test.py

print("=== 开始实验 ===")

print("1. 测试有 __init__.py 的包:")
from package_A import module_a
print("✅ 成功导入 package_A")
module_a.say_hello()

print("\n2. 测试没有 __init__.py 的文件夹:")
from package_B import module_b
print("✅ 成功导入 package_B")
module_b.say_hello()

print("=== 实验结束 ===")

3. 执行实验

  1. 创建以上文件和文件夹

  2. 在命令行运行:

    cd my_experiment
    python test.py
    

预期结果和现象

程序会在第二处导入时报错并停止执行:

=== 开始实验 ===
1. 测试有 __init__.py 的包:
✅ 成功导入 package_A
Hello from package A!

2. 测试没有 __init__.py 的文件夹:
Traceback (most recent call last):
  File "test.py", line 10, in <module>
    from package_B import module_b
ModuleNotFoundError: No module named 'package_B'

实验结论

  • __init__.py:Python将文件夹识别为包,可以正常导入

  • __init__.py:Python不识别为包,导入时报错停止

  • __init__.py 是包的"身份证",告诉Python这是一个包

扩展实验

在 package_B 中创建一个空的 __init__.py 文件,重新运行程序,观察变化。