2016-11-09 6 views
0

Ich bin neu in Python. Hier ist ein grundlegendes Beispiel für mein Problem.Wie weisen Sie den Wert einer Variablen innerhalb einer definierten Funktion zu?

spam='spam' 

def change(): 
    spam='eggs' 

change() 

print(spam) 

Dieser Code wird "Spam" auf der Konsole ausgeben. Gibt es eine Möglichkeit, dies ohne Rückkehr oder Argumente zu arbeiten. Vielen Dank.

+1

Put 'global spam' in Ihrer Funktion, obwohl beachten Sie dies nicht immer gute Praxis ist –

+0

Ich möchte nur Chris_Rands Warnung wiederholen: Dieser Ansatz ist in der Regel nicht der beste Weg, . Es macht Ihren Code schwierig zu verstehen und zu warten. –

+0

Die Variablen in Ihrer Funktion sollten in Ihrer Funktion bleiben. Und die Umkehrung ist auch richtig, Sie sollten immer versuchen, keine globalen Variablen zu verwenden (wenn Ihre Funktion etwas benötigt, gibt es meistens eine Möglichkeit, keine globale Variable zu verwenden) –

Antwort

0

hinzufügen global spam in Ihrem def die Variable außerhalb der Methodendefinition oder noch besser, weisen Sie einen neuen Wert aus dem Ergebnis des Verfahrens definierte Ziel:

spam = "spam" 
def change(): return 'eggs' 
spam = change() #spam now contains 'eggs' 

Allerdings, wenn Sie Listen übergeben oder Wörterbücher, die den Wert innerhalb der Methode ändern, beeinflussen auch den äußeren Wert, aber das ist eine andere Geschichte. Wenn Sie es versuchen möchten, verwenden Sie spam=["spam"] und innerhalb der Methode tun spam[0] = 'eggs'. Es gibt keine Notwendigkeit für Globals oder Zuweisungen außerhalb der Methode für diesen Fall.

+1

Aber das ist schlecht, Sie sollten es gesagt haben (und es ist meistens möglich, ohne es zu tun) –

+0

leider funktioniert das nicht für mich, wie ich mehrere Variablen geändert habe und ich brauche sie von überall zugegriffen werden. –

0

Sie können wie folgt vorgehen:

spam='spam' 

def change(): 
    global spam 
    spam='eggs' 

change() 

print(spam) 
Verwandte Themen