Ich glaube, dass Python Funktionsumfang für lokale Variablen verwendet. Das heißt, wenn Sie in einer bestimmten Funktion einer lokalen Variablen einen Wert zuweisen, steht sie ab diesem Moment in dieser Funktion zur Verfügung, bis sie zurückgegeben wird. Da beide Zweige Ihres Codes garantiert a
zugewiesen werden, müssen Sie None
zunächst nicht zu a
zuweisen.
Beachten Sie, dass wenn Sie auch auf Variablen zugreifen können, die in äußeren Funktionen deklariert sind - mit anderen Worten, Python hat Closures.
def adder(first):
def add(second):
return first + second
return add
Dies definiert eine Funktion namens Addierer. Wenn es mit einem Argument first
aufgerufen wird, gibt es eine Funktion zurück, die jedes Argument, das es empfängt, zu first
hinzufügt und diesen Wert zurückgibt. Zum Beispiel:
add_two = adder(2)
add_three = adder(3)
add_two(4) # = 6
add_three(4) # = 7
Doch obwohl Sie den Wert aus der äußeren Funktion lesen können, können Sie es nicht ändern (im Gegensatz zu vielen anderen Sprachen). Stellen Sie sich zum Beispiel vor, einen Akkumulator zu implementieren. Sie könnten Code wie so schreiben:
def accumulator():
total = 0
def add(number):
total += number
return total
return add
Leider versuchen, diesen Code führt zu einer Fehlermeldung zu verwenden:
UnboundLocalError: local variable 'total' referenced before assignment
Dies ist, weil die Leitung total += number
den Wert von total
zu ändern versucht, welche nicht auf diese Weise in Python getan werden.
Es gibt keine "Deklaration" einer Variablen in Python! –