Beim Schreiben von Funktionen können wir Variablen haben, die innerhalb des Funktionskörpers deklariert werden. Wenn zum Beispiel eine Variable name in der Funktion deklariert wird, gilt sie als neue Variable, die völlig unabhängig von der außerhalb der Funktion deklarierten ist:
name = 'Helen'
def greet():
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Helen
Die Variable name wird in der Funktion greet() deklariert und ihr Gültigkeitsbereich endet am Ende der Funktion. Variablen, die innerhalb eines bestimmten Bereichs deklariert werden, nennt man üblicherweise lokale Variablen. Sobald das Programm die Funktion verlässt, „vergisst“ es diese Variable.
Um auf Variablen außerhalb des aktuellen Gültigkeitsbereichs zuzugreifen und sie zu ändern, können wir das Schlüsselwort global verwenden, um Python mitzuteilen, dass wir diese Variable als global behandeln möchten:
name = 'Helen'
def greet():
global name
name = 'Bob'
print('Hi', name)
greet() # Hi Bob
print('Outside:', name) # Outside: Bob
Diesmal hat die Funktion greet() die globale Variable name geändert und ihren Wert auf Bob gesetzt.
Herausforderung
Finde den Fehler in der folgenden Funktion und behebe ihn. Die Funktion sollte die Summe der bisher übergebenen Werte zurückgeben.
total = 0
def compute_sum(val):
total = total + val
return val
print(compute_sum(10))
print(compute_sum(20))
print(compute_sum(30))