Heim  >  Artikel  >  Backend-Entwicklung  >  globale Python-Variablen

globale Python-Variablen

高洛峰
高洛峰Original
2016-10-19 16:41:101176Durchsuche

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn