__name__ Python · 常用约定
`__name__` 是一个内置变量,用来表示当前模块的名字。如果这个文件是被直接运行的,它的值就是 `'__main__'`;如果这个文件是被其他文件导入的,它的值就是模块名(文件名)。就像一个人在不同场合有不同的身份:在家是主人,在公司是员工。
怎么用
直接访问 `__name__`,通常在条件判断中使用。
小例子
# 文件:我的模块.py
print("我的模块的 __name__ 是:", __name__)
if __name__ == "__main__":
print("我是被直接运行的")
else:
print("我是被导入的")
运行结果
我的模块的 __name__ 是: __main__ 我是被直接运行的 **如果被导入**,假设在另一个文件中 `import 我的模块`,输出: 我的模块的 __name__ 是: 我的模块 我是被导入的
对比:直接看 `__name__` 可以知道文件怎么被使用
# 很多库利用这个特性决定是否执行某些代码
常见使用场景
1. 判断是否为主程序:
if __name__ == "__main__":
# 只有直接运行才执行这里的代码
print("程序启动")
2. 在模块中提供测试代码:
def 功能():
pass
if __name__ == "__main__":
# 测试代码
assert 功能() == 预期结果
提醒:- `__name__` 是模块的一个属性,每个 Python 文件都有。 - 如果模块被导入,`__name__` 的值是模块名(不含 .py 后缀)。 - 如果你在一个包内导入,`__name__` 可能包含点号路径。
在代码里遇到不认识的词?打开代码点读机,点一下就懂 → ← Python全部词条