Seite 1 von 1
Variabeln aus einer eigenen Funktion heauslösen
Verfasst: Dienstag 22. Dezember 2009, 22:33
von min
Hallo
Ich bin noch nicht lang hier und habe auch noch nicht viel wissen angesammelt. Bei einem meiner Skripte soll eine Variabel nebenbei durch meine Funktion verändert werden. Wie kann man die Variabel aus der Funktion weiter verwenden? Oder ist es nicht möglich? Hier mal ein Beispiel Code:
Verfasst: Dienstag 22. Dezember 2009, 22:48
von gkuhl
Meinst du sowas:
Code: Alles auswählen
def change(number):
return number + 2
number = 1
number = change(number)
print(change)
Grüße
Gerrit
Verfasst: Dienstag 22. Dezember 2009, 22:56
von min
Eigentlich meinte ich etwas anderes. man kann es ja eigentlich auch so rausholen (siehe unten), aber das ist zu umständlich wenn man die Funktion schon 10mal, wenn nicht mehr, verwendet hat. Da käme es gelegen wenn man es direkt bei der Funktion ändern könnte.
Code: Alles auswählen
def mein():
REST = 2
return REST
REST = mein()
print (REST)
Verfasst: Dienstag 22. Dezember 2009, 23:03
von theliquidwave
Böse!
Code: Alles auswählen
REST = -1
def mein():
global REST
REST = 2
# ...
mein()
print REST
Gruß
Verfasst: Dienstag 22. Dezember 2009, 23:07
von min
Danke genau die Antwort die ich bräuchte. Jetzt funktioniert alles.

Verfasst: Dienstag 22. Dezember 2009, 23:10
von theliquidwave
Chrisber hat geschrieben:Böse!
Verfasst: Dienstag 22. Dezember 2009, 23:47
von BlackJack
@Chrisber: Das war in der Tat Böse™ von Dir. Das passiert halt wenn man den Leuten so etwas zeigt. Es funktioniert, also ist es eine tolle Lösung, die man fortan immer öfter einsetzen möchte.
@min: Du glaubst nur, dass Du diese Antwort gebraucht hast. ``global`` sollte man meiden. Es macht Programme unübersichtlich und schlecht wart- und testbar.
Verfasst: Mittwoch 23. Dezember 2009, 14:45
von cofi
Was hast du vor? Eigentlich sollte man ja froh sein, dass man so viele Namespaces spendiert bekommt ...
Verfasst: Mittwoch 23. Dezember 2009, 15:55
von jbs
Sieht auch nicht viel besser aus.
Code: Alles auswählen
class func(object):
def __init__(self, x):
self.x = x
def __call__(self):
print self.x
func = func(0)
Eigentlich das gleiche und daher auch hässlich.
Verrat uns dein X.