Python 局部变量';临时工';分配前参考
我试图用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[
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()检查这一点,并确保编辑器正确配置为仅使用空格(其中四个是标准的)进行缩进。