gpt4 book ai didi

python - 在 python 中导入导入器范围的名称

转载 作者:行者123 更新时间:2023-11-28 22:02:40 25 4
gpt4 key购买 nike

有两个脚本:

#imptee.py
foo = "abc"

def show():
print "foo from imptee:",foo

#impter.py:

#!/usr/bin/env python

from imptee import *

show()

foo = 123

print "foo from impter:",foo
show()

当我运行 impter.py 时,它会产生以下结果:

foo from imptee: abc

foo from impter: 123

foo from imptee: abc

我只是不明白为什么在将 123 分配给变量 foo 之后,show() 仍然打印“abc”,而不是 123。我认为在“from imptee import *”之后,foo 和 show() 现在在全局命名空间中,并且没有本地命名空间。我确实知道搜索顺序应该是:局部命名空间、全局命名空间、内置命名空间。那么,这是为什么呢?有人可以帮我吗?谢谢!

最佳答案

Python中所谓的“全局命名空间”,其实就是module命名空间。每个模块都有一个,它们是独立的。因此,从 imptee 导入 * 会将 object referencesimptee 复制到 __main__imptee 即使在事后仍然有自己的命名空间,show() 有一个 regardless 的引用。

关于python - 在 python 中导入导入器范围的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10963813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com