from math import sqrt
def sim_distance(prefs,person1,person2):
si={}
for item in prefs[person1]:
if item in prefs[person2]:
si[item]=1
if len(si)==0: return 0
sum_of_squares=sum([ pow ( prefs[person1] [item] - prefs[person2][item],2)
for item in prefs[person1] if item in prefs[person2]])
return 1/(1+sqrt(sum_of_squares))
reload(recommendations)
recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')
这是错误
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')
NameError: name 'critics' is not defined
评论家是一个自定义数组
答案 0 :(得分:1)
这与重新加载名称空间没有任何关系。您根本没有定义critics
。
答案 1 :(得分:0)
这看起来可能是范围问题。如果你在不同的功能中定义批评者,那么批评者将只存在于该功能中。您在这里引用了函数主要范围内的批评者,因此您需要从创建它的函数中返回批评者,或者(不是理想的)最初在全局范围内定义它。
def initCritics():
critics = []
# make some critics
return critics
critics = initCritics()
recommendations.sim_distance(critics,'Lisa Rose','Gene Seymour')