376 Stimmen

Globale Variablen für Python-Funktionen?

Ich weiß, ich sollte vermeiden, mit globalen Variablen in erster Linie aufgrund von Verwirrung wie diese, aber wenn ich sie verwenden sollten, ist die folgende eine gültige Art und Weise zu gehen, über die Verwendung von ihnen? (Ich versuche, die globale Kopie einer Variablen aufzurufen, die in einer separaten Funktion erstellt wurde).

x = "somevalue"

def func_A ():
   global x
   # Do things to x
   return x

def func_B():
   x = func_A()
   # Do things
   return x

func_A()
func_B()

Ist die x die die zweite Funktion verwendet, den gleichen Wert wie die globale Kopie von x dass func_a verwendet und modifiziert? Spielt die Reihenfolge beim Aufruf der Funktionen nach der Definition eine Rolle?

1 Stimmen

Nehmen Sie nicht an, dass Python Referenzen vor der Zuweisung als solche behandelt, nur weil Sie eine Variable in Ihrer Funktion zugewiesen haben. Bis zur ersten Zuweisung, wenn Sie x verwenden, wäre es weder die globale noch die lokale Variable. Sie werden die berüchtigte UnboundLocalError-Ausnahme ins Gesicht bekommen :)

0 Stimmen

Python kopiert nicht im Auftrag.

2voto

Marcin Punkte 46457

Sie müssen die global Deklaration, wenn Sie den einer globalen Variablen zugewiesenen Wert ändern möchten.

Sie brauchen es nicht, um aus einer globalen Variablen zu lesen. Beachten Sie, dass der Aufruf einer Methode für ein Objekt (selbst wenn er die Daten in diesem Objekt ändert) den Wert der Variablen, die dieses Objekt enthält, nicht ändert (es sei denn, es handelt sich um reflektive Magie).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X