【发布时间】:2015-12-16 12:16:31
【问题描述】:
当我在 python 2.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)>
谁能解释一下为什么第一个脚本失败了? 谢谢。
【问题讨论】:
-
如果您从函数中删除 import sys,那么它也将起作用。由于 foo() 的范围内没有 sys ,它将从全局范围内引用 sys。
标签: python