Globale Variablen entsprechen nicht dem Geist der Parameterübergabe, daher verwende ich sie selten, es sei denn, ich definiere Konstanten. Heute hat ein Kollege eine Frage zu globalen Variablen gestellt und ich habe herausgefunden, dass es eine Möglichkeit gibt, dies zu tun.
Das Programm sieht ungefähr so aus:
CONSTANT = 0 def modifyConstant() : print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT
Die laufenden Ergebnisse sind wie folgt:
UnboundLocalError: Lokale Variable 'CONSTANT', auf die vor der Zuweisung verwiesen wird
Es scheint, dass die globale Variable in der Funktion „modifyConstant“ zu einer lokalen Variablen wird. Es scheint, dass die globale Variable nicht wirksam wird.
Nehmen Sie einige Änderungen vor:
CONSTANT = 0 def modifyConstant() : print CONSTANT #CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT
Es läuft normal. Es scheint, dass innerhalb der Funktion auf globale Variablen zugegriffen werden kann.
Das Problem besteht also darin, dass Python CONSTANT als lokale Variable betrachtet, da die Variable CONSTANT innerhalb der Funktion geändert wird und CONSTANT vor CONSTANT = 1 gedruckt wird, sodass dieser Fehler natürlich auftritt.
Wie kann man also auf globale Variablen innerhalb einer Funktion zugreifen und diese ändern? Das Schlüsselwort global sollte zum Ändern von Variablen verwendet werden (ähnlich wie PHP):
CONSTANT = 0 def modifyConstant() : global CONSTANT print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT