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.

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
Definition Außerhalb der Funktionen deklariert Wird innerhalb einer Funktion deklariert
Lebensdauer Wird beim Start des Programms erstellt und beim Beenden zerstört Wird beim Aufruf der Funktion erstellt und bei der Rückkehr zerstört
Datenaustausch Für alle Funktionen freigegeben Nicht geteilt; existiert nur innerhalb seiner Funktion
Umfang Kann überall im Programm aufgerufen werden Nur innerhalb der Funktion zugänglich
Benötigte Parameter Keine Parameterübergabe erforderlich Kann durch Parameter oder Zuweisungen innerhalb der Funktion erstellt werden
Lagerung Verwaltet 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