Inhalt
- Variable innerhalb der Funktion definiert und außerhalb verwendet
- Variable außerhalb definierte Funktion und innerhalb verwendet
- Variablen in verschachtelten Funktionen
Ich bin ein Softwareentwickler mit großem Interesse an Datenanalyse und Statistik.
Globale Variablen sind solche Variablen die außerhalb eines Funktionsumfangs deklariert sind, aber in einer Funktion verwendet werden können. Um eine globale Variable zu deklarieren und zu verwenden, können wir das Schlüsselwort "global" vor dem Variablennamen verwenden.
Versuchen wir, das Konzept anhand einiger Beispiele besser zu verstehen.
Variable innerhalb der Funktion definiert und außerhalb verwendet
Betrachten Sie den folgenden Code.
#! / usr / bin / python3 def myFunct (): a = 20 print (a) myFunct () print (a)
Der Code führt zu einem NameError, da die Variable a nur für die Funktion myFunct sichtbar ist. Der Druck (a) gegen Ende des Programms schlägt fehl, da das Programm davon ausgeht, dass die Variable noch nicht definiert wurde. Dies liegt daran, dass die Variable "a" lokal für die Funktion mit dem Namen myFunct () ist.
Die Ausgabe des obigen Programms lautet: Traceback (letzter Aufruf zuletzt): 20 Datei "G: workspaces py_ws MyProj org pythontutorials globalvslocal globalAndLocal.py", Zeile 13, in gedruckter Form (a) NameError: name 'a' ist nicht definiert
Wir können myFunct () ein globales a hinzufügen, bevor wir den Wert festlegen und drucken, damit der Code funktioniert. Betrachten Sie den erweiterten Code unten:
#! / usr / bin / python3 def myFunct (): global aa = 20 print ("Innerhalb von myfunct (): a =", a) myFunct () print ("Wert eines nach dem ersten Aufruf von myFunct: a =", a) a = 10 print ("Nach dem Festlegen eines neuen Werts außerhalb von myFunct: a =", a) myFunct () print ("Nach dem zweiten Aufruf von myFunct: a =", a)
Der obige Code wird wie folgt ausgegeben:
Innerhalb von myfunct (): a = 20 Wert von a nach dem ersten Aufruf von myFunct: a = 20 Nach dem Festlegen eines neuen Werts außerhalb von myFunct: a = 10 Innerhalb von myfunct (): a = 20 Nach dem zweiten Aufruf von myFunct: a = 20
Variable außerhalb definierte Funktion und innerhalb verwendet
Betrachten wir ein anderes Beispiel:
#! / usr / bin / python3 def callMe (): print (msg) msg ​​= "Called" msg = "Calling ..." callMe () print (msg)
Was passiert, wenn wir den Code ausführen? Wird es erfolgreich laufen?
Die Ausgabe des obigen Codes sieht folgendermaßen aus:
Traceback (letzter Aufruf zuletzt): Datei "G: workspaces py_ws MyProj org pythontutorials globalvslocal scopedOutside.py", Zeile 12, in callMe () Datei "G: workspaces py_ws MyProj org pythontutorials globalvslocal scopedOutside.py ", Zeile 8, in callMe print (s) UnboundLocalError: Lokale Variable 'msg', auf die vor der Zuweisung verwiesen wird
Wenn wir den Code genau untersuchen, können wir sehen, dass der Variablen msg der Wert "Calling" außerhalb der Funktion callMe zugewiesen wird. Dann wird callMe () aufgerufen. Obwohl msg vor dem Aufruf außerhalb der Funktion deklariert wird, geht Python davon aus, dass wir aufgrund der Zuweisung zu msg innerhalb von callMe () eine lokale Variable möchten, sodass die print-Anweisung diese Fehlermeldung auslöst.
Normalerweise eine Variable, die innerhalb von verwendet wird eine Funktion wird als lokale Variable angesehen, wenn sie nicht als globale Variable deklariert wurde.
Um den Fehler zu beheben, müssen wir den Code wie folgt ändern:
#! / usr / bin / python3 def callMe (): globaler Nachrichtendruck (msg) msg ​​= "Called" msg = "Calling ..." callMe () print (msg)
Jetzt sollten "Anrufen" und "Angerufen" wie vorgesehen in zwei separaten Zeilen gedruckt werden. Die Ausgabe für das obige Programm ist wie folgt:
Variablen in verschachtelten Funktionen
Es ist möglich, eine Funktion innerhalb einer anderen Funktion zu definieren. Solche Funktionen werden als verschachtelte Funktionen bezeichnet.
Betrachten Sie den folgenden Code:
#! / usr / bin / python3 def äußere (): x = 10 def innere (): globale xx = 2 print ("Vor dem Aufruf von inner (): x =", x) print ("Aufruf von inner () jetzt .. . ") inner () print (" Nach dem Aufruf von inner (): x = ", x) äußere () print (" x in main: "+ str (x))
Die Ausgabe des obigen Codes lautet:
Vor dem Aufruf von inner (): x = 10 Jetzt inner () aufrufen ... Nach dem Aufruf von inner (): x = 10 x in main: 2
Im obigen Programm wird der Wert von x in der Funktion Outer () als 10 beibehalten, unabhängig davon, was Inner () mit der Variablen macht. Nach dem Aufruf von inner () existiert eine globale Variable mit dem Wert 2. Da Outer () wiederum inner () aufruft, gibt die print-Anweisung in main den Wert aus, der einer globalen Variablen von inner () zugewiesen wurde.