我是一个自学成才的程序员,没有接受过正式的培训,所以如果这是一个愚蠢的问题,请提前原谅我。
在用Python编程时,我发现了一些奇怪的事情:
from someModule import someClass
def someFunction():
someInstance = someClass()
print "foo"
del someClass
someFunction()这会立即终止,并显示一个未绑定的局部变量错误:
UnboundLocalError: local variable 'someClass' referenced before assignment注释掉delete语句可以解决这个问题:
...
#del someClass
...然后返回:
foo所以,有两个问题:
1) del语句位于函数的末尾。为什么它会在开头的位之前被调用?
2)为什么会出现“未绑定的局部变量”错误?它不应该是一个“未绑定的全局变量”错误吗?
发布于 2012-02-29 06:44:42
del语句隐式地将名称someClass呈现为整个函数的本地名称,因此行
someInstance = someClass()尝试查找本地名称someClass,该名称当时尚未定义。del语句没有提前执行--名称没有从一开始就定义好。
如果您真的想这样做(提示:您不想这样做),则必须将名称声明为global
def someFunction():
global someClass
...
del someClasshttps://stackoverflow.com/questions/9490876
复制相似问题