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