unboundlocalerror本地变量'结果'在分配之前引用

时间:2017-11-07 04:23:31

标签: python

多次询问此错误,但我无法通过阅读来解决问题。 我的代码是:

def show_preference_list_isolated(isolated):
    preference_list_isolated = {
    (240, 323): [(164, 108),(178, 422),(152, 77),(126, 431)],
    (396, 168): [(178, 422),(164, 108),(126, 431),(152, 77)],
    (288, 235): [(178, 422),(126, 431),(152, 77),(164, 108)],
    (88, 248): [(164, 108),(178, 422),(152, 77),(126, 431)],
    }
    if isolated in preference_list_isolated:
        result = preference_list_isolated[isolated]
    return result

def begin_matching(isolated):
    preference_list_isolated = show_preference_list_isolated(isolated)
    print(preference_list_isolated)
    for relay in preference_list_isolated:
....

1 个答案:

答案 0 :(得分:1)

在您的代码中,问题出在以下部分:

if isolated in preference_list_isolated:
    result = preference_list_isolated[isolated]
return result

正如 Julien 指出的那样,isolated中找不到preference_list_isolated时会发生什么?此时它永远不会输入if loop,并且由于永远不执行result = ...,因此没有result的赋值。因此,当您尝试返回result时,它会抛出错误,因为此时根本不会定义它。

因此,要纠正这一点,您可以选择在None之前为其分配占位符 if loop,如下所示:

result = None
if isolated in preference_list_isolated:
    result = preference_list_isolated[isolated]
return result

或者,将return语句放在if loop中,如下所示:

if isolated in preference_list_isolated:
    result = preference_list_isolated[isolated]
    return result