Seite 1 von 1

Locale Variable laut Meldung vor Zuweisung benutzt

Verfasst: Montag 2. Mai 2016, 14:54
von linzus

Code: Alles auswählen

def rec(key, regex):
    path+=key.path()                 #tracking path
    if regex.findall(sb):               #checking key for search-pattern
        print('found: ', regex.findall(sb), 'in (sub)key: ', path+key.name(),type(path))

    try:
        for subkey in key:           #check subkeys and call recursive
            rec(subkey,regex)
    except:
        pass
Hallo, ich weis nicht wieso mein Code so besch*** dargestellt wird, die Codebox ist richtig ausgewählt. Er lässt noch nicht mal Leerzeichen zu, und auch \t geht nicht.

bei obiger Teilfunktion bekomme ich den Fehler "UnboundLocalError: local variable 'path' referenced before assignment"

ich verstehe allerdings nicht, wieso. ich habe auch probehalber i+=1 versucht, allerdings mit dem gleichen Ergebnis.
Sieht jemand den Fehler?
Viele Grüße,
...

Re: Locale Variable laut Meldung vor Zuweisung benutzt

Verfasst: Montag 2. Mai 2016, 15:23
von BlackJack
@linzus: ``a += b`` ist äquivalent zu ``a = a + b``. Und um den alten Wert von `a` zu nehmen und `b` drauf zu addieren, muss `a` halt irgendwann vorher mal einen Wert zugewiesen bekommen. Und `path` wird in der Funktion vorher nicht zugewiesen. Sollte es irgendwo ausserhalb der Funktion ein `path` geben und Du meintest eigentlich *das*, dann vergiss diesen Lösungsansatz am besten gleich wieder, denn der ist unsauber. Eine Funktion sollte alles was sie braucht (ausser Konstanten) als Argument(e) übergeben bekommen und Ergebnisse als Rückgabewerte an den Aufrufer zurück geben und nicht einfach irgendwas ausserhalb neu zuweisen oder verändern. Das ist sehr undurchsichtig und führt zu schwer wartbarem und schwer verständlichem Code.