不灭的火

革命尚未成功,同志仍须努力 _ 加密SHA/AES/RSA下载JDK17

作者:AlbertWen  添加时间:2025-09-01 11:51:07  修改时间:2025-10-13 16:17:10  分类:02.Python编程  编辑

在 Python 中,__name__ 是一个内置变量,用于标识当前模块的名称。它的主要作用是区分模块是作为主程序运行还是被其他模块导入,这在代码复用和模块化设计中非常有用。

1. __name__ 的基本行为

  • 当一个 Python 文件被直接运行时,该文件中的 __name__ 变量会被自动赋值为 "__main__"
  • 当一个 Python 文件被其他模块导入时,该文件中的 __name__ 变量会被赋值为模块的文件名(不包含 .py 扩展名)

2. 常见用法示例

示例 1:直接运行模块

创建一个文件 example.py

print(f"当前模块的 __name__ 是: {__name__}")

if __name__ == "__main__":
    print("这个代码块只有在直接运行该模块时才会执行")

直接运行该文件:

python example.py

输出结果:

当前模块的 __name__ 是: __main__
这个代码块只有在直接运行该模块时才会执行

示例 2:导入模块使用

创建另一个文件 import_example.py,导入上面的 example.py

import example  # 导入模块

print(f"在 import_example 中,example 模块的 __name__ 是: {example.__name__}")

运行 import_example.py

python import_example.py

输出结果:

当前模块的 __name__ 是: example
在 import_example 中,example 模块的 __name__ 是: example

可以看到,当 example.py 被导入时,其 __name__ 变为了模块名 "example",且 if __name__ == "__main__": 中的代码块没有执行。

3. 主要应用场景

(1) 模块的自我测试

可以在 if __name__ == "__main__": 代码块中编写测试代码,这样当模块被直接运行时会执行测试,而被导入时不会执行:

def add(a, b):
    return a + b

# 测试代码
if __name__ == "__main__":
    print("测试 add 函数:")
    print(add(2, 3))  # 输出 5
    print(add(5, 7))  # 输出 12

(2) 避免模块导入时执行不必要的代码

当一个模块包含大量执行代码(而非仅定义函数和类)时,可以用 __name__ 控制只在直接运行时执行这些代码:

# 定义函数(无论导入还是直接运行都会执行)
def useful_function():
    pass

# 只有直接运行时才执行的代码
if __name__ == "__main__":
    # 执行一些需要用户交互或初始化的操作
    print("程序开始运行...")
    useful_function()

4. 总结

  • __name__ 是 Python 模块的内置属性,用于标识模块名称
  • 直接运行模块时,__name__ = "__main__"
  • 模块被导入时,__name__ = 模块文件名(不带扩展名)
  • 主要用途:区分模块运行方式、实现模块自测试、控制代码执行条件

这个机制让 Python 模块既可以作为独立程序运行,又可以作为库被其他程序导入使用,极大地提高了代码的复用性。