Locale Variable laut Meldung vor Zuweisung benutzt

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
linzus
User
Beiträge: 6
Registriert: Donnerstag 28. April 2016, 16:47

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,
...
Zuletzt geändert von Anonymous am Montag 2. Mai 2016, 15:17, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
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.
Antworten