模块化与命名空间
学习目标
通过本集的学习,你将能够:
- 理解模块化的好处
- 掌握命名空间的使用
- 理解模块依赖
- 学会可见性控制
1. 模块化概述
1.1 什么是模块化?
模块化将程序分成独立的模块,每个模块有清晰的职责。
模块化的好处:
- 代码组织
- 可重用性
- 可维护性
- 并行开发
- 减少命名冲突1.2 模块示例
Python 模块:
# math_utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
# main.py
import math_utils
print(math_utils.add(1, 2))2. 命名空间
2.1 什么是命名空间?
命名空间是一个容器,用于组织名称,避免冲突。
命名冲突问题:
// 文件1
int x = 10;
// 文件2
int x = 20; // 冲突!
命名空间解决:
namespace ns1 {
int x = 10;
}
namespace ns2 {
int x = 20;
}
ns1::x // 10
ns2::x // 202.2 Python 命名空间
Python 命名空间:
- 局部命名空间(函数内)
- 全局命名空间(模块内)
- 内置命名空间(Python 内置)
搜索顺序:局部 → 全局 → 内置3. 可见性控制
3.1 公有 vs 私有
Python 惯例:
def public_func():
pass
def _private_func(): // 下划线表示私有
pass
class MyClass:
def public_method(self):
pass
def _private_method(self):
pass3.2 模块导出
JavaScript ES6:
// module.js
export const x = 42;
export function f() { ... }
// main.js
import { x, f } from './module.js';4. 模块依赖
4.1 依赖管理
依赖关系:
A → B → C
(A 依赖 B,B 依赖 C)
循环依赖问题:
A → B → A(避免!)5. 实用案例
5.1 案例:Python 包结构
项目结构:
my_project/
__init__.py
math/
__init__.py
arithmetic.py
geometry.py
io/
__init__.py
file.py
network.py
使用:
from my_project.math.arithmetic import add
from my_project.io.file import read_file6. 自测问题
- 模块化的好处是什么?
- 什么是命名空间?
- 如何控制可见性?
- 什么是模块依赖?
- 为什么要避免循环依赖?
7. 下集预告
下一集我们将学习并发与并行!
参考资料
- 《程序设计语言:概念与构造》