logo

Globale und lokale Variablen in Python

In Python spielen Variablen eine Schlüsselrolle beim Speichern und Verwalten von Daten. Ihr Verhalten und ihre Zugänglichkeit hängen davon ab, wo sie im Programm definiert sind. In diesem Artikel untersuchen wir anhand von Beispielen globale und lokale Variablen, wie sie funktionieren, und gängige Szenarien.

Lokale Variablen

Lokale Variablen werden innerhalb einer Funktion erstellt und existieren nur während ihrer Ausführung. Auf sie kann von außerhalb der Funktion nicht zugegriffen werden.



eine homogene Mischung

Beispiel 1: In diesem Code erstellen wir eine lokale Variable innerhalb einer Funktion und greifen darauf zu.

Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Ausgabe
Hello from inside the function! 

Erläuterung: Wir definieren begrüßen() mit einer lokalen Variablen Nachricht und drucken Sie es aus. Da msg nur während der Ausführung der Funktion existiert, wird innerhalb der Funktion darauf zugegriffen. Berufung begrüßen() zeigt die Meldung an.

Beispiel 2 : In diesem Beispiel erstellen wir eine lokale Variable innerhalb einer Funktion und versuchen dann, außerhalb der Funktion darauf zuzugreifen, was einen Fehler verursacht.



Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Ausgabe

Traceback (letzter Anruf zuletzt):
Datei „/home/guest/sandbox/Solution.py“ Zeile 6 in
print('Outside function:' msg)
NameError: Name „msg“ ist nicht definiert

Erläuterung: msg ist eine lokale Variable im Inneren begrüßen() und ist nur dort zugänglich. Das Drucken außerhalb führt zu einem Fehler, da es global nicht vorhanden ist.



Globale Variablen

Globale Variablen werden außerhalb aller Funktionen deklariert und können überall im Programm, auch innerhalb von Funktionen, aufgerufen werden.

In diesem Beispiel erstellen wir eine globale Variable und greifen dann sowohl innerhalb als auch außerhalb einer Funktion darauf zu.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Ausgabe
Inside function: Python is awesome! Outside function: Python is awesome! 

Erläuterung: msg ist eine globale Variable, auf die sowohl innerhalb als auch außerhalb von zugegriffen werden kann Anzeige() Funktion. Berufung Anzeige() druckt das globale Nachricht und Drucken Nachricht außerhalb der Funktion funktioniert wie erwartet.

Notiz: Wenn eine Variable nicht innerhalb einer Funktion (lokaler Bereich) gefunden wird, sucht Python automatisch im globalen Bereich danach. Wenn jedoch eine lokale Variable denselben Namen wie eine globale hat, wird die globale Variable innerhalb dieser Funktion gespiegelt.

Verwendung lokaler und globaler Variablen

Wenn eine Variable sowohl global als auch lokal mit demselben Namen definiert ist, überschattet die lokale Variable die globale Variable innerhalb der Funktion. Änderungen an der lokalen Variablen wirken sich nicht auf die globale Variable aus, es sei denn, Sie deklarieren die Variable explizit als global.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Ausgabe
Me too. I love Geeksforgeeks 

Erläuterung: Innen Spaß() S ist eine lokale Variable, die auf „Ich auch“ gesetzt ist. und gibt diesen Wert aus. Außerhalb des Globalen S bleibt „Ich liebe Geeksforgeeks“, also Druck S Danach wird der globale Wert angezeigt.

Ändern globaler Variablen innerhalb einer Funktion

Standardmäßig kann man eine globale Variable innerhalb einer Funktion nicht ändern, ohne sie als global zu deklarieren. Wenn Sie es versuchen, löst Python einen Fehler aus, da es die Variable als lokal behandelt. Um eine globale Variable zu ändern, verwenden Sie die globales Schlüsselwort .

Ohne global (verursacht Fehler)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Ausgabe

UnboundLocalError: Lokale Variable „s“, auf die vor der Zuweisung verwiesen wird

Erläuterung: In fun() geht Python davon aus, dass s lokal ist, da wir versuchen, es zu ändern. Vor dieser Zeile sind jedoch keine lokalen s vorhanden, sodass ein Fehler auftritt.

Mit global (funktioniert korrekt)

Python
s = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s) 

Ausgabe
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Erläuterung:

  • Durch die Deklaration von s als global wird Python angewiesen, die Variable aus dem globalen Bereich zu verwenden.
  • Die Funktion hängt zuerst „ GFG“ an und weist dann s neu zu.
  • Änderungen bleiben außerhalb der Funktion bestehen.

Global vs. lokal mit demselben Namen

Python
a = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a) 

Ausgabe
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3 

Erläuterung:

  • f() gibt ein globales a aus, ohne es zu ändern.
  • g() erstellt eine lokale und lässt die globale unberührt.
  • h() deklariert a als global und ändert es.

Lokale Variable vs. globale Variable

Vergleichsbasis Globale Variable Lokale Variable
DefinitionAußerhalb der Funktionen deklariertWird innerhalb einer Funktion deklariert
LebensdauerWird beim Start des Programms erstellt und beim Beenden zerstörtWird beim Aufruf der Funktion erstellt und bei der Rückkehr zerstört
DatenaustauschFür alle Funktionen freigegebenNicht geteilt; existiert nur innerhalb seiner Funktion
UmfangKann überall im Programm aufgerufen werdenNur innerhalb der Funktion zugänglich
Benötigte ParameterKeine Parameterübergabe erforderlichKann durch Parameter oder Zuweisungen innerhalb der Funktion erstellt werden
LagerungVerwaltet im globalen Namensraum (kein fester Speicherort)Gespeichert im lokalen Namespace der Funktion (Stapelrahmen)
WertÄnderungen wirken sich auf das gesamte Programm ausÄnderungen sind lokal und wirken sich nicht auf andere Funktionen aus