__name__的目的是什么?

3

__name__ 是什么?我只见过它和 __main__ 成对出现。

我知道经典用法是:if __name__ == __main__:,它定义了作为包或单独运行时的行为。

但是,__name__ 还有什么其他用途吗?


4
可能是What does if __name__ == "__main__" do?的重复问题。我知道你提到了那种用法,但已接受的答案确实给出了你所寻求的答案。 - zondo
4
logger = logging.getLogger(__name__) - Colonel Thirty Two
我没有看到我想要的答案。 - drum
1个回答

10

如果你直接执行脚本,__name__ 的值为 "__main__"。如果你在导入一个模块,则__name__ 的值为该模块的名称。

foo.py:

print(__name__)

bar.py

import foo

运行脚本:

$ python foo.py
__main__
$ python bar.py 
foo

1
除了知道模块的名称之外,还有其他用途吗? - drum
“if name == 'main'” 这个习惯用法允许你根据脚本是直接调用还是作为模块调用来创建不同的行为。这是最常见的用例。它在调试或单元测试中可能有一些用途。 - T. Arboreus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接