【发布时间】:2012-06-13 09:30:54
【问题描述】:
有两个脚本:
#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 来自 imptee: abc
来自 impter 的 foo:123
foo 来自 imptee: abc
我只是不明白为什么在将 123 分配给变量 foo 后,show() 仍然打印 'abc',而不是 123。我认为在 "from imptee import *" 之后,foo 和 show() 现在在全局命名空间中,并且没有本地命名空间。我明白搜索顺序应该是:本地命名空间、全局命名空间、内置名称规范。那么,这是为什么呢?有人可以帮我一把吗? 谢了!
【问题讨论】:
-
请将您的代码放在代码块中,以便于阅读
-
感谢您的建议,从现在开始我会注意的。但是我是新用户,我不知道具体怎么做,还有什么建议吗?
-
您可以突出显示您的代码并按编辑窗口上方的“代码”按钮自动执行此操作,或者您可以简单地将所有代码缩进四个空格(除了它可能具有的任何其他缩进) 手动完成。在这种情况下,另一位编辑已经为您完成了。
标签: python namespaces