Einführung in globale und lokale Variablen in Python

Veröffentlicht: 2021-08-26

Python behandelt Variablen sehr eigenwillig. Während viele Programmiersprachen Variablen standardmäßig als global betrachten (sofern nicht als lokal deklariert), betrachtet Python Variablen als lokal, sofern nicht andersherum deklariert. Der treibende Grund dafür, dass Python Variablen standardmäßig als lokal betrachtet, ist, dass die Verwendung globaler Variablen im Allgemeinen als schlechte Programmierpraxis angesehen wird.

Wenn also beim Programmieren in Python Variablen innerhalb einer Funktion definiert werden, sind sie standardmäßig lokal. Alle Änderungen oder Manipulationen, die Sie an dieser Variablen im Hauptteil der Funktion vornehmen, bleiben nur innerhalb des Geltungsbereichs dieser Funktion. Oder mit anderen Worten, diese Änderungen werden in keiner anderen Variablen außerhalb der Funktion widergespiegelt, selbst wenn die Variable den gleichen Namen wie die Variable der Funktion hat. Alle Variablen existieren im Bereich der Funktion, in der sie definiert sind, und halten diesen Wert. Um praktische Erfahrungen mit Python-Variablen und -Projekten zu sammeln, probieren Sie unsere Data-Science-Zertifizierungen von den besten Universitäten aus den USA aus.

Lassen Sie uns in diesem Artikel den Begriff lokaler und globaler Variablen in Python untersuchen und erläutern, wie Sie globale Variablen definieren. Wir werden uns auch etwas ansehen, das als „nichtlokale Variablen“ bekannt ist.

Weiter lesen!

Inhaltsverzeichnis

Globale und lokale Variablen in Python

Sehen wir uns ein Beispiel an, um zu verstehen, wie globale Werte im Hauptteil einer Funktion in Python verwendet werden können:

Programm:

def func():

drucken (Zeichenfolge)

string = „Ich liebe Python!“

func()

Ausgabe

Ich liebe Python!

Wie Sie sehen, erhält die Variable string den Wert „I love Python!“. bevor func() aufgerufen wird. Der Funktionskörper besteht nur aus der Druckanweisung. Da es im Hauptteil der Funktion keine Zuweisung an die Zeichenfolgenvariable gibt, nimmt sie stattdessen den Wert der globalen Variablen.

Als Ergebnis ist die Ausgabe der globale Wert der Variablenzeichenfolge, in diesem Fall „I love Python!“.

Lassen Sie uns nun den Wert von string innerhalb von func() ändern und sehen, wie sich dies auf die globalen Variablen auswirkt:

Programm:

def func():

string = „Ich liebe Java!“

drucken (Zeichenfolge)

string = „Ich liebe Python!“

func()

drucken (Zeichenfolge)

Ausgabe:

Ich liebe Java!

Ich liebe Python!

Im obigen Programm haben wir eine Funktion func() definiert, und darin haben wir einen variablen String mit dem Wert „I love Java!“. Diese Variable ist also lokal für die Funktion func(). Dann haben wir wie zuvor die globale Variable, und dann rufen wir die Funktion und die Druckanweisung auf. Zuerst wird die Funktion ausgelöst, ruft die Druckanweisung dieser Funktion auf und liefert die Ausgabe „Ich liebe Java!“. – das ist die lokale Variable für diese Funktion. Sobald das Programm den Gültigkeitsbereich der Funktion verlässt, wird der Wert von s in „I love Python“ geändert, und deshalb erhalten wir beide Zeilen als Ausgabe.

Lassen Sie uns nun die ersten beiden Beispiele hinzufügen und versuchen, mit der print-Anweisung auf den String zuzugreifen und ihm dann einen neuen Wert zuzuweisen. Im Wesentlichen versuchen wir, einen String sowohl als lokale als auch als globale Variable zu erstellen.

Glücklicherweise lässt Python diese Verwirrung nicht zu und wirft einen Fehler. Hier ist wie:

Programm:

def func():

drucken (Zeichenfolge)

string = „Ich liebe Java!“

drucken (Zeichenfolge)

string = „Ich liebe Python!“

func()

Ausgabe (Fehler):

—————————————————————————

UnboundLocalError Traceback (letzter Aufruf zuletzt)

<ipython-input-3-d7a23bc83c27> in <modul>

5

6 Zeichenfolge = „Ich liebe Python!“

—-> 7 func()

<ipython-input-3-d7a23bc83c27> in func()

1 def func():

—-> 2 print(string)

3 Zeichenfolge = „Ich liebe Java!“

4 drucken (Zeichenfolge)

5

UnboundLocalError: Lokale Variable „s“ wurde vor der Zuweisung referenziert

Offensichtlich erlaubt Python nicht, dass eine Variable innerhalb einer Funktion sowohl global als auch lokal ist. Es gibt uns also eine lokale Variable, da wir dem String innerhalb von func() einen Wert zuweisen. Als Ergebnis zeigt die erste Druckanweisung die Fehlermeldung. Alle Variablen, die im Rahmen einer Funktion erstellt oder geändert werden, sind lokal, es sei denn, sie wurden explizit als „global“ deklariert.

Globale Variablen in Python definieren

Das Schlüsselwort global wird benötigt, um Python darüber zu informieren, dass wir auf globale Variablen zugreifen. Hier ist wie:

Programm:

def func():

globale Zeichenfolge

drucken (Zeichenfolge)

string = „Aber ich möchte auch Python lernen!“

drucken (Zeichenfolge)

string = „Ich möchte Java lernen!“

func()

drucken (Zeichenfolge)

Ausgabe:

Ich möchte Java lernen!

Aber ich will auch Python lernen!

Aber ich will auch Python lernen!

Wie Sie der Ausgabe entnehmen können, erkennt Python hier die globalen Variablen und wertet die print-Anweisung entsprechend aus und gibt eine entsprechende Ausgabe aus.

Globale Variablen in verschachtelten Funktionen verwenden

Lassen Sie uns nun untersuchen, was passiert, wenn globale Variablen in verschachtelten Funktionen verwendet werden. Sehen Sie sich dieses Beispiel an, in dem die Variable „Sprache“ definiert und in verschiedenen Bereichen verwendet wird:

Programm:

def func():

Sprache = „Englisch“

def func1():

Weltsprache

Sprache = „Spanisch“

print(“Vor dem Aufruf von func1: ” + language)

print("Aufruf von func1 jetzt:")

Funktion1()

print(“Nach dem Aufruf von func1: ” + language)

func()

print(“Wert der Sprache in main: ” + Sprache)

Ausgabe:

Vor dem Aufruf von func1: Englisch

Aufruf von func1 jetzt:

Nach Aufruf von func1: Englisch

Sprachwert hauptsächlich: Spanisch

Wie Sie sehen können, hat das Schlüsselwort global, wenn es innerhalb der verschachtelten Funktion func1 verwendet wird, keinen Einfluss auf die Variable „Sprache“ der übergeordneten Funktion. Das heißt, der Wert wird als „Englisch“ beibehalten. Dies zeigt auch, dass nach dem Aufruf von func() im Namensraum des Moduls eine Variable 'Sprache' mit dem Wert 'Spanisch' existiert.

Dieses Ergebnis stimmt mit dem überein, was wir auch im vorherigen Abschnitt herausgefunden haben – dass eine Variable, wenn sie im Hauptteil einer Funktion definiert wird, immer lokal ist, sofern nicht anders angegeben. Es sollte jedoch auch einen Mechanismus für den Zugriff auf die Variablen geben, die zu verschiedenen anderen Bereichen gehören.

Hier kommen nichtlokale Variablen ins Spiel!

Nichtlokale Variablen

Nichtlokale Variablen sind neue Arten von Variablen, die von Python3 eingeführt wurden. Diese haben viel mit globalen Variablen gemeinsam und sind ebenfalls extrem wichtig. Ein Unterschied zwischen nichtlokalen und globalen Variablen besteht jedoch darin, dass nichtlokale Variablen es nicht ermöglichen, die Variablen vom Modulbereich aus zu ändern.

Sehen Sie sich die folgenden Beispiele an, um dies zu verstehen:

Programm:

def func():

Weltsprache

Druck (Sprache)

Sprache = „Deutsch“

func()

Ausgabe:

Deutsch

Als Ausgabe liefert das Programm wie erwartet „Frankfurt“. Lassen Sie uns nun 'global' in 'nonlocal' ändern und sehen, was passiert:

Programm:

def func():

nicht lokale Sprache

Druck (Sprache)

Sprache = „Deutsch“

func()

Ausgabe:

Datei „<ipython-input-9-97bb311dfb80>“, Zeile 2

nicht lokale Sprache

^

SyntaxError: Keine Bindung für nichtlokale 'Sprache' gefunden

Wie Sie sehen können, wirft das obige Programm einen Syntaxfehler. Wir können von hier aus verstehen, dass nichtlokale Zuweisungen nur aus der Definition von verschachtelten Funktionen erfolgen können. Nichtlokale Variablen sollten innerhalb des Gültigkeitsbereichs der Funktion definiert werden, und wenn dies nicht der Fall ist, kann sie ihre Definition auch nicht im verschachtelten Gültigkeitsbereich finden. Schauen Sie sich jetzt das folgende Programm an:

Programm:

def func():

Sprache = „Englisch“

def func1():

nicht lokale Sprache

Sprache = „Deutsch“

print(“Vor dem Aufruf von func1: ” + language)

print("Aufruf von func1 jetzt:")

Funktion1()

print(“Nach dem Aufruf von func1: ” + language)

Sprache = „Spanisch“

func()

print(“'Sprache' in Hauptsache: ” + Sprache)

Ausgabe:

Vor dem Aufruf von func1: Englisch

Aufruf von func1 jetzt:

Nach Aufruf von func1: Deutsch

'Sprache' hauptsächlich: Spanisch

Das obige Programm funktioniert, weil die Variable „Sprache“ vor dem Aufruf von func1() definiert wurde. Wenn es nicht definiert ist, erhalten wir einen Fehler wie unten:

Programm:

def func():

#language = „Englisch“

def func1():

nicht lokale Sprache

Sprache = „Deutsch“

print(“Vor dem Aufruf von func1: ” + language)

print("Aufruf von func1 jetzt:")

Funktion1()

print(“Nach dem Aufruf von func1: ” + language)

Sprache = „Spanisch“

func()

print(“'Sprache' in Hauptsache: ” + Sprache)

Ausgabe:

Datei „<ipython-input-11-5417be93b6a6>“, Zeile 4

nicht lokale Sprache

^

SyntaxError: Keine Bindung für nichtlokale 'Sprache' gefunden

Das Programm funktioniert jedoch einwandfrei, wenn wir nonlocal durch global ersetzen:

Programm:

def func():

#language = „Englisch“

def func1():

Weltsprache

Sprache = „Deutsch“

print(“Vor dem Aufruf von func1`: ” + language)

print("Aufruf von func1 jetzt:")

Funktion1()

print(“Nach dem Aufruf von func1: ” + language)

Sprache = „Spanisch“

func()

print(“'Sprache' in Hauptsache: ” + Sprache)

Ausgabe:

Vor dem Aufruf von func1: Englisch

Aufruf von func1 jetzt:

Nach Aufruf von func1: Deutsch

'Sprache' hauptsächlich: Deutsch

Wie Sie bemerken, wird auch der Wert der globalen Variablen (Sprache) im obigen Programm geändert! Das ist die Macht, die nichtlokale Variablen mit sich bringen!

Abschließend

In diesem Artikel haben wir lokale, globale und nicht lokale Variablen in Python besprochen, zusammen mit verschiedenen Anwendungsfällen und möglichen Fehlern, auf die Sie achten sollten. Mit diesem Wissen an Ihrer Seite können Sie beginnen, mit verschiedenen Arten von Variablen zu üben und die feinen Unterschiede zu bemerken.

Python ist weltweit eine äußerst beliebte Programmiersprache – insbesondere wenn es darum geht, datenbezogene Probleme und Herausforderungen zu lösen. Bei upGrad haben wir eine Lernbasis in über 85 Ländern mit über 40.000 bezahlten Lernenden weltweit, und unsere Programme haben mehr als 500.000 Berufstätige beeinflusst. Unsere Kurse in Data Science und maschinellem Lernen wurden entwickelt, um motivierten Studenten mit unterschiedlichem Hintergrund zu helfen, ihre Reise zu beginnen und sich im Bereich Data Science hervorzuheben. Unsere 360-Grad-Karriereassistenz sorgt dafür, dass es nach der Einschreibung bei uns beruflich nur noch aufwärts geht. Wenden Sie sich noch heute an uns und erleben Sie die Kraft des Peer-Learning und der globalen Vernetzung!

Welche Arten von Variablen gibt es in Python?

Basierend auf ihrem Geltungsbereich sind die Variablen in Python entweder lokal, global oder nicht lokal.

Kann auf globale Variablen in Python innerhalb einer Funktion zugegriffen werden?

Ja, auf globale Variablen kann innerhalb einer Funktion in Python zugegriffen werden.

Was ist der Unterschied zwischen lokalen und globalen Variablen?

Globale Variablen haben das gesamte Programm als Geltungsbereich, während lokale Variablen nur die Funktion, in der sie definiert sind, als Geltungsbereich haben.