1. 模块作为主程序直接运行
当Python文件被直接执行时,__name__
的值会被设置为'__main__'
。
# 文件: main_script.py
print(f"当前模块名称: {__name__}")
if __name__ == '__main__':
print("这个模块是直接运行的")
运行结果:
当前模块名称: __main__
这个模块是直接运行的
掌握模块导入机制,编写更灵活的Python代码
在Python中,每个模块都有一个内置属性__name__
。这个特殊属性用于确定模块是被导入运行还是作为主程序直接运行。
当模块被直接运行时,__name__
的值是'__main__'
;当模块被导入到其他模块中时,__name__
的值是模块的实际名称(即文件名去掉.py后缀)。
当Python文件被直接执行时,__name__
的值会被设置为'__main__'
。
# 文件: main_script.py
print(f"当前模块名称: {__name__}")
if __name__ == '__main__':
print("这个模块是直接运行的")
运行结果:
当前模块名称: __main__
这个模块是直接运行的
当模块被导入时,__name__
的值是模块的文件名(不含.py扩展名)。
# 文件: module_a.py
print(f"在module_a中: {__name__}")
# 文件: module_b.py
import module_a
print(f"在module_b中: {__name__}")
运行module_b.py的结果:
在module_a中: module_a
在module_b中: __main__
最常见的用法是在模块末尾添加条件语句:if __name__ == '__main__':
。这样可以让模块既可以被导入使用,也可以作为独立脚本运行。
# 文件: calculator.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
# 测试代码
if __name__ == '__main__':
print("运行测试...")
print(f"5 + 3 = {add(5, 3)}")
print(f"10 - 4 = {subtract(10, 4)}")
$ python calculator.py
运行测试...
5 + 3 = 8
10 - 4 = 6
# 另一个脚本中
import calculator
result = calculator.add(20, 15)
print(result) # 输出: 35
35
在开发过程中,可以为模块编写测试代码,这些代码只在直接运行模块时执行,不影响模块导入。
将功能封装在函数中,使用if __name__ == '__main__'
解析命令行参数并调用相应函数。
防止在导入模块时执行初始化或打印语句,提高代码重用性。
Python的__name__
属性是模块系统的重要组成部分,合理使用它可以:
掌握if __name__ == '__main__':
模式是编写高质量Python代码的关键技能之一。
Python模块教程 | __name__属性详解
本文由ZengTing于2025-07-30发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20256840.html
发表评论