当我在Python2.7中重新导入一个已经导入的模块时,我得到一个UnboundLocalError。一个最小的例子是
#!/usr/bin/python
import sys
def foo():
print sys
import sys
foo()
Traceback (most recent call last):
File "./ptest.py", line 9, in <module>
foo()
File "./ptest.py", line 6, in foo
print sys
UnboundLocalError: local variable 'sys' referenced before assignment
但是,当嵌套导入作为函数定义中的第一条语句放置时,一切都正常:
#!/usr/bin/python
import sys
def foo():
import sys
print sys
foo()
<module 'sys' (built-in)>
有人能解释一下为什么第一个脚本失败了吗? 谢谢。你知道吗
这与引用全局变量相同。这在Python FAQ中有很好的解释
对于这种情况,很难理解的是,当您在一个范围内导入某些内容时,会有一个隐式赋值。(在这种情况下实际上是重新分配)。你知道吗
事实上,
import sys
存在于foo
中意味着,在foo
中,sys
不是指全局sys
变量,而是指一个单独的局部变量,也称为sys
。你知道吗相关问题 更多 >
编程相关推荐