张芷铭的个人博客

Python 提供多个特殊全局变量,用于获取模块和执行上下文信息。

核心特殊变量

变量说明典型值
__name__模块名称或 __main__"__main__" 或模块名
__file__模块文件路径/path/to/module.py
__doc__模块/类/函数文档字符串docstring 内容
__package__所属包名包名或 None
__all__import * 时导出的名称列表["func1", "ClassA"]
__builtins__内置函数命名空间内置函数字典
__loader__模块加载器对象加载器实例
__spec__模块规范信息ModuleSpec 对象

name 常见用法

1
2
3
if __name__ == "__main__":
    # 仅在直接运行时执行
    main()
  • 直接运行:__name__ = "__main__"
  • 被导入:__name__ = "模块名"

all 控制导出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# module.py
__all__ = ["public_func", "PublicClass"]

def public_func():
    pass

def _private_func():
    pass

# 使用
from module import *  # 只导入 public_func, PublicClass

file 获取路径

1
2
3
4
5
6
7
import os

# 获取当前模块所在目录
current_dir = os.path.dirname(__file__)

# 获取绝对路径
abs_path = os.path.abspath(__file__)

Comments