我是一名没有接受过正规培训的自学成才的程序员,如果这是一个愚蠢的问题,请提前原谅我。
在使用Python编程时,我发现了一些奇怪的东西:
from someModule import someClass
def someFunction():
someInstance = someClass()
print "foo"
del someClass
someFunction()
这会立即死于未绑定的局部变量错误:
UnboundLocalError: local variable 'someClass' referenced before assignment
注释掉删除语句可以解决问题:
...
#del someClass
...
然后它返回:
foo
所以,2个问题:
1)del语句位于函数的末尾。为什么在开头的位之前调用它?
2)为什么它给我一个“未绑定的局部变量”错误?它不应该是一个“未绑定的全局变量”错误吗?
答案 0 :(得分:8)
del
语句隐式地为整个函数呈现名称someClass
local,所以行
someInstance = someClass()
尝试查找本地名称someClass
,此时未定义。 del
语句不会提前执行 - 名称从一开始就没有定义。
如果你真的想做这样的事情(提示:你没有),你必须声明名称global
:
def someFunction():
global someClass
...
del someClass