Python 使用两个def()函数对局部变量取消绑定LocalError
我收到错误信息:Python 使用两个def()函数对局部变量取消绑定LocalError,python,function,global-variables,Python,Function,Global Variables,我收到错误信息: UnboundLocalError: local variable 'locs' referenced before assignment 我曾在其他帖子中读到,解决方法是在定义函数后使用global locs。但是,有两个def()函数显示locs=。我已尝试在其中一个def函数下插入全局LOC并运行,还使用两个函数中定义的全局LOC运行代码,但在每种情况下都会收到相同的错误 回溯: Traceback (most recent call last): File "mo
UnboundLocalError: local variable 'locs' referenced before assignment
我曾在其他帖子中读到,解决方法是在定义函数后使用global locs
。但是,有两个def()
函数显示locs=
。我已尝试在其中一个def函数下插入全局LOC
并运行,还使用两个函数中定义的全局LOC
运行代码,但在每种情况下都会收到相同的错误
回溯:
Traceback (most recent call last):
File "model2.py", line 107, in <module>
main()
File "model2.py", line 94, in main
if not locs:
UnboundLocalError: local variable 'locs' referenced before assignment
我是否将
全局LOC
插入错误的位置?问题不在于全局
/局部
变量也不在于函数
这仅仅是因为try/except
块:
试试看:
pred,locs=预测一个图像(img\U路径,clf,标签)
除:
打印(“跳过{}”。格式(img_路径))
如果不是LOC:
持续
让我们假设predict\u one\u image
确实引发了一个异常。这意味着既不需要定义pred
也不需要定义loc
。之后,只打印except
块,而if not locs
将失败
有两种简单的方法可以解决这个问题。在呼叫失败的情况下,将locs
初始化为None
:
try:
locs = None
pred, locs = predict_one_image(img_path, clf, labels)
except:
print("Skipping {}".format(img_path))
if not locs:
continue
或者,如果未定义loc
(我从代码中了解到),仅仅因为您想继续
,请将继续
语句放在中,但除外:
try:
pred, locs = predict_one_image(img_path, clf, labels)
except:
print("Skipping {}".format(img_path))
continue
try:
pred, locs = predict_one_image(img_path, clf, labels)
except:
print("Skipping {}".format(img_path))
continue