2016-04-05 3 views
-3

Ich versuche, Schleife in Python auszuführen, während die Variable x und y innerhalb der Schleife angeben. Wenn ich die folgende Schleife laufen:Nicht erkannte Variable innerhalb einer Schleife in Python

my_funcs = {} 
    for i in range(len(data) - 1): 
     def foo(x, y): 
      x = data[i]['body'] 
      y = data[i+1]['body'] 
      tfidf = vectorizer.fit_transform([x, y]) 
      return ((tfidf * tfidf.T).A)[0,1] 


     foo.func_name = "cosine_sim%d" % i 
     my_funcs["cosine_sim%d" % i] = foo 
     print(foo(x,y)) 

bekomme ich die seltsamen Fehler: x is not defined in der Linie print(foo(x,y)) Jede Idee, warum auf der Erde könnte dies geschehen, da ich gesagt habe, dass x = data[i]['body']?

Vielen Dank im Voraus

+0

Warum definieren Sie eine Funktion in einer Schleife? 'x' ist nur innerhalb dieser Funktion definiert, also' foo (x, y) 'weiß nicht, was' x' ist –

+0

Einrückung .... – miradulo

+0

Sie erwähnen nicht, welche Zeile den Fehler erzeugt, aber ich denke es wird 'print (foo (x, y))' sein, während du versuchst, auf 'x' zu verweisen, ohne ihm jemals einen Wert zuzuweisen - du hast gesagt, dass' x = data [i] ['body'] ' aber das ist innerhalb Ihrer Funktion, und die print-Anweisung ist außerhalb der Funktion –

Antwort

2

Wenn alles andere ist richtig, ich glaube, Sie diese Methode außerhalb der Schleife bewegen sollte.

Sie haben nur x innerhalb foo definiert, so dass die print Zeile darüber nicht bekannt ist. Außerdem wurden Überschreiben Sie den x Parameter von foo sowieso

def foo(x, y): 
    tfidf = vectorizer.fit_transform([x, y]) 
    return ((tfidf * tfidf.T).A)[0,1] 

my_funcs = {} 
for i in range(len(data) - 1): 
    x = data[i]['body'] 
    y = data[i+1]['body'] 
    foo.func_name = "cosine_sim%d" % i 
    my_funcs["cosine_sim%d" % i] = foo 
    print(foo(x,y)) 
+0

bekommen, das funktioniert großartig @ cricket_007! –

Verwandte Themen