当我们在python脚本中导入多个模块时,__ name__是什么

问题描述 投票:0回答:2

[当我们运行foo.py脚本时,将全局变量__name__设置为"__main__",而在运行以下脚本时

    #Here we import the foo.py module
    import foo

    print("This is a Stackoverflow question")

__name__等于foo。我的问题是,如果我们要导入另一个模块,则说foo1.py

    #Here we import foo.py and foo1.py modules
    import foo, foo1

    print("This is still the same Stackoverflow question")

那么,在这种情况下,__name__的值是多少?显然,以上概括适用于任意数量的模块。

P.S。在我发布问题之前,我已经亲自尝试过,答案是__main_,这让更多人感到困惑。

python python-module
2个回答
0
投票

__name__始终是模块的名称。 "__main__"仅在文件not用于创建模块时(即,作为脚本运行时)使用。

在您的第一个示例中,__name__仅等于foo中的foo.py,而不等于导入foo的文件中的。

考虑仅包含一个简单文件tmp.py

print(__name__)

如果将此文件作为脚本运行,则输出为__main__

$ python tmp.py
__main__

如果将其作为模块导入,则输出为tmp

$ python -c 'import tmp'
tmp

0
投票

导入模块的名称不受在同一脚本中完成的其他导入的影响。

import foo, foo1

print(f"foo name = {foo.__name__}")
print(f"foo1 name = {foo1.__name__}")
print(f"this scripts name = {__name__}")

结果:

foo name = foo
foo1 name = foo1
this scripts name = __main__
© www.soinside.com 2019 - 2024. All rights reserved.