自定义模块 #

创建自己的Python模块来组织代码。

一、创建模块 #

1.1 简单模块 #

python
# my_module.py

"""这是一个自定义模块的文档字符串"""

def greet(name):
    """问候函数"""
    return f"Hello, {name}!"

PI = 3.14159

class Calculator:
    def add(self, a, b):
        return a + b

1.2 使用模块 #

python
# main.py
import my_module

print(my_module.greet("Tom"))
print(my_module.PI)
calc = my_module.Calculator()

二、模块结构 #

python
# my_module.py

# 模块文档
"""模块说明文档"""

# 导入依赖
import os
from typing import List

# 常量定义
VERSION = "1.0.0"
PI = 3.14159

# 私有变量(约定)
_internal_value = 100

# 公开函数
def public_function():
    pass

# 私有函数(约定)
def _private_function():
    pass

# 类定义
class MyClass:
    pass

# 主程序入口
if __name__ == "__main__":
    print("直接运行模块")

三、__all__变量 #

python
# my_module.py

__all__ = ['greet', 'PI']  # from my_module import * 只导入这些

def greet(name):
    return f"Hello, {name}!"

def _internal():
    pass

PI = 3.14159

四、创建包 #

text
my_package/
├── __init__.py
├── module1.py
├── module2.py
└── subpackage/
    ├── __init__.py
    └── module3.py

4.1 init.py #

python
# my_package/__init__.py

from .module1 import function1
from .module2 import function2

__all__ = ['function1', 'function2']
__version__ = '1.0.0'

4.2 导入包 #

python
# 导入整个包
import my_package

# 导入特定模块
from my_package import module1

# 导入特定函数
from my_package.module1 import function1

# 使用包
my_package.function1()

五、相对导入 #

python
# 在包内部的模块中使用

# 相对导入
from . import module1        # 当前目录
from .module1 import func    # 当前目录的模块
from .. import parent_module # 上级目录
from ..subpackage import mod # 上级目录的子包

六、模块最佳实践 #

python
# 1. 模块文档
"""模块说明"""

# 2. 导入顺序
# 标准库
import os
import sys

# 第三方库
import numpy as np

# 本地模块
from . import local_module

# 3. 常量大写
MAX_SIZE = 100

# 4. 私有成员下划线开头
def _internal_function():
    pass

# 5. 使用__name__检查
if __name__ == "__main__":
    main()
最后更新:2026-03-16