什么';当我们在一个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
是。导入模块不会改变直接运行此特定脚本的事实