2017-01-24 11 views
0

Ich möchte auf eine Variable zugreifen, die in einer Funktion berechnet wird, aber das ist nicht der Rückgabewert. Ich rufe diese Funktion in einer anderen Funktion auf, so dass ich den Rückgabewert nicht ändern kann (ich weiß, dass dies das ist, was Leute normalerweise vorschlagen). Ich habe versucht, vor meinen Variable global verwenden, aber wenn ich es außerhalb nennen, ich habe die folgende Fehlermeldung: Nameerror: global name ‚DA‘ definiert ist, nicht Mein Code sieht wie folgt aus:Zugreifen auf Variable von einer Funktion außerhalb davon: Python

def function(): 

    global DA 

    DA = something 

    .... 

return something_different 

print DA #(outside the function) 

Ich bin relativ Neu bei Python, also ist da vielleicht etwas offensichtlich, dass ich hier vermisse. Vielen Dank!

+0

möglich dupe von [Verwenden von globalen Variablen in einer anderen Funktion als die, die sie erstellt] (http://stackoverflow.com/questions/423379/using-global-variables-in-a-function-other-than- the-one-that-created-them) – davedwards

+0

Hast du tatsächlich _call_ 'funktioniert'? Der Code innerhalb einer Funktion wird nur ausgeführt, wenn die Funktion aufgerufen wird. Wenn Sie nur die Funktion definieren und nicht aufrufen, wird dem globalen 'DA' kein Wert zugewiesen. – ShadowRanger

+0

danke für deine antwort. was ich bin darüber verwirrt, dass, wenn ich Funktion() aufrufen, dann gibt es mir den Rückgabewert und nicht DA? – Sasha

Antwort

0

Sie müssen zuerst DA außerhalb der Funktion definieren. global erstellt nicht Erstellen Sie eine neue Variable und fügen Sie sie in den globalen Bereich ein. Das Schlüsselwort global weist die Funktion an, auf die vorhandene Definition von DA zu verweisen, anstatt eine neue Variable mit demselben lokalen Namen für die Funktion zu erstellen. Dies steht im Gegensatz zum Standardwert, der darin besteht, dass eine Variable innerhalb einer Funktion (mit einem Gleichheitszeichen) der Funktion lokal zugeordnet ist und die Definition einer beliebigen Variablen des globalen Gültigkeitsbereichs mit demselben Namen überschreibt, wobei die ursprüngliche Definition wiederhergestellt wird außerhalb des Funktionsumfangs.

+0

Sie müssen 'DA' nicht außerhalb der Funktion definieren, aber wenn die einzige Definition innerhalb der Funktion ist, müssen Sie _call_ die Funktion tatsächlich aufrufen (und sie muss einen Codepfad durchqueren, der das in Frage stehende' global' definiert) Die Zuordnung erfolgt. – ShadowRanger

Verwandte Themen