Variabeln aus einer eigenen Funktion heauslösen

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

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:

Code: Alles auswählen

def mein():
    REST = 2
mein()
print (REST)
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Meinst du sowas:

Code: Alles auswählen

def change(number):
    return number + 2

number = 1
number = change(number)
print(change)
Grüße
Gerrit
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

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)
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Böse!

Code: Alles auswählen

REST = -1

def mein():
    global REST
    REST = 2
    # ...

mein()
print REST
Gruß
Grüßle.
min
User
Beiträge: 37
Registriert: Dienstag 22. Dezember 2009, 22:25

Danke genau die Antwort die ich bräuchte. Jetzt funktioniert alles. :D
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Chrisber hat geschrieben:Böse!
Grüßle.
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. :twisted:

@min: Du glaubst nur, dass Du diese Antwort gebraucht hast. ``global`` sollte man meiden. Es macht Programme unübersichtlich und schlecht wart- und testbar.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Was hast du vor? Eigentlich sollte man ja froh sein, dass man so viele Namespaces spendiert bekommt ...
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Code: Alles auswählen

def func():
    print func.x

func.x = 3
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.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Antworten