什么';当我们在一个python脚本中导入多个模块时,名称是

什么';当我们在一个python脚本中导入多个模块时,名称是,python,python-module,Python,Python Module,当我们运行foo.py脚本时,全局变量\uuuuu name\uuuu设置为“\uuuuu main\uuuuu”,同时运行以下脚本 #Here we import the foo.py module import foo print("This is a Stackoverflow question") \uuuu name\uuuu等于foo。我的问题是,如果我们有另一个导入的模块,比如说foo1.py #Here we import foo.py and

当我们运行
foo.py
脚本时,全局变量
\uuuuu name\uuuu
设置为
“\uuuuu main\uuuuu”
,同时运行以下脚本

    #Here we import the foo.py module
    import foo

    print("This is a Stackoverflow question")
\uuuu name\uuuu
等于
foo
。我的问题是,如果我们有另一个导入的模块,比如说
foo1.py

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

    print("This is still the same Stackoverflow question")
那么在这种情况下,
\uuuuu name\uuuuu
的值是多少?显然,上述方法可以推广到任意数量的模块

附言。
在我发布这个问题之前,我自己尝试过,答案是
\uu main\uu
,这让我更加困惑

\uuuu name\uuuu
始终是模块的名称<代码>“\uuuu main”仅在文件不用于创建模块时使用,即作为脚本运行时使用

在第一个示例中,
\uuuu name\uuuu
仅在
foo.py
中等于
foo
,而不是在导入
foo
的文件中

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

print(__name__)
如果将此文件作为脚本运行,则输出为
\uuuu main\uuuu

$ python tmp.py
__main__
如果将其作为模块导入,则输出为
tmp

$ python -c 'import tmp'
tmp

导入模块的名称不受在同一脚本中执行的其他导入的影响

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__

因此,对于第二个脚本,
\uuuu name\uuuuuu
再次是
“\uuuu main\uuuuuuu”
对吗?第二个脚本是什么意思?包含两个导入模块的脚本。直接运行(而不是作为模块)的脚本的名称始终是
\uuu main\uuuuuu
是。导入模块不会改变直接运行此特定脚本的事实