Python 局部变量';临时工';分配前参考

Python 局部变量';临时工';分配前参考,python,Python,我试图用python调用下面的函数。每当我调用以下函数时 TFIDF_score = compute_TFIDF(TF_score, IDF_score) 我收到一个错误[分配前引用的局部变量'temp] 以下是参考代码 def compute_TFIDF(TF_score,IDF_score): TFIDF_score=[] for j in IDF_score: for i in TF_score: if j['key'] == i[

我试图用python调用下面的函数。每当我调用以下函数时

TFIDF_score = compute_TFIDF(TF_score, IDF_score)
我收到一个错误
[分配前引用的局部变量'temp]

以下是参考代码

def compute_TFIDF(TF_score,IDF_score):
    TFIDF_score=[]
    for j in IDF_score:
        for i in TF_score:
            if j['key'] == i['key'] and j['doc_id'] == i['doc_id']:
                temp= {'doc_id': j['doc_id'],
                       'TFIDF_score': j['IDF_score']*i['TF_score'],
                       'key': i['key']}    
            TFIDF_score.append(temp)

    return TFIDF_score

任何解决方案,因为我已经分配了temp变量,然后我正在传递它。

如果
If
子句中的测试在第一次迭代中为false,则未定义
temp
,但您仍然尝试无条件地将其附加到
TDIF\u分数中。此外,如果测试在第一次迭代中为true(在这种情况下,您没有NameError),如果在下一次迭代中评估为false,您将再次追加上一次迭代中的
temp

显然,您希望缩进
TFIDF\u score.append(temp)
行,使其位于
if
块中:

for j in IDF_score:
    for i in TF_score:
        if j['key'] == i['key'] and j['doc_id'] == i['doc_id']:
            temp= {'doc_id': j['doc_id'],
                   'TFIDF_score': j['IDF_score']*i['TF_score'],
                   'key': i['key']}    
            TFIDF_score.append(temp)

错误消息显示了您需要的所有信息。在访问append之前,请仔细检查是否确实执行了分配。或者您的append语句的缩进错误。这意味着未执行
temp=…
行(因为它位于
if
中,显然不满足条件),但您仍然尝试
append(temp)
。我正在尝试更改缩进,但它不起作用。任何替代解决方案??“不起作用”是对问题最无用的描述。而且没有替代方案——在Python中,缩进是语言的一部分。很有可能您混合使用了制表符和空格进行缩进,您可以使用tabnanny()检查这一点,并确保编辑器正确配置为仅使用空格(其中四个是标准的)进行缩进。