Rückgabewerte von aufgerufenen Funktionen verarbeiten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dominik123
User
Beiträge: 35
Registriert: Montag 10. Februar 2014, 08:48

Hallo,

ich rufe folgendermaßen in ein Modul ausgelagerte Funktionen auf:
modulname.funktionsname(x,y,z)
Die Parameter werden korrekt übergeben und in der Funktion abgearbeitet.
Versuche ich nun allerdings ein Ergebnis mittels:
return ergebnis
zurück zu geben und anschließend im Hauptprogramm auszugeben, so wird der Wert nicht zurückgegeben.
Muss ich bei Auslagerung in Modulen etwas gesondertes beachten?
Wie kann ich mehrere Ergebnisse zurückgeben? Normalerweise sollte das mittels:
return (ergebnis1, ergebnis2,...) funktionieren oder?
Ich hoffe meine Fragen sind verständlich!

Vielen Dank!
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Du musst den Code zeigen, sonst kann man nur raten.
In specifications, Murphy's Law supersedes Ohm's.
BlackJack

@dominik123: Zur letzten Frage: Man kann immer nur einen Wert zurück geben. Dieser eine Wert darf aber natürlich auch ein Tupel mit mehreren Elementen sein. Oder jedes andere Objekt das andere Werte als Elemente und/oder Attribute besitzt.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

BlackJack hat geschrieben:Dieser eine Wert darf aber natürlich auch ein Tupel mit mehreren Elementen sein.
Um das mal als Codebeispiel zu zeigen:

Code: Alles auswählen

>>> def do_something(value):
	return value + value, value * value

>>> result = do_something(5)
>>> print(result)
(10, 25)
>>> print(result[0])
10
dominik123
User
Beiträge: 35
Registriert: Montag 10. Februar 2014, 08:48

Hallo,
erstmal danke für die Antworten!
Die Funktion die ich aufrufe sieht folgendermaßen aus:

Code: Alles auswählen

def user_input(target_RJ, target_BUJ, target_TJ):
    target_RJ*=0.001
    target_BUJ*=0.001
    target_TJ = (target_BUJ + 14*target_RJ) 

    print "--> target_RJ:", target_RJ
    print "--> target_BUJ:", target_BUJ
    print "--> target_TJ:", target_TJ
    ergebnis= target_TJ

    return ergebnis
Im Hauptprogramm versuche ich folgendermaßen mit ihr zu arbeiten:

Code: Alles auswählen

      calibration2002m.user_input(target_RJ,target_BUJ,target_TJ)
      
      print "ergebnis (RJ):%f"%ergebnis
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du musst den Rückgabewert einer Funktion auch an einen Namen binden!

Code: Alles auswählen

def foo():
    return "bar"

# so wird der Rückgabewert "verworfen"
foo()

# so bindest Du ihn an einen Namen
result = foo()

# mit diesem Namen kannst Du dann weiterarbeiten
print(result)
> bar

# oder ohne explizite Bindung, wenn Du das Ergebnis nur einmal brauchst
print(foo())
> bar
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
dominik123
User
Beiträge: 35
Registriert: Montag 10. Februar 2014, 08:48

Ich kann jetzt sowohl einen als auch mehrere Rückgabeparameter verarbeiten.
Vielen Dank!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

dominik123 hat geschrieben:Ich kann jetzt sowohl einen als auch mehrere Rückgabeparameter verarbeiten.
Sicherheitshalber: Es gibt nicht mehrere Rückgabewerte, es gibt nur einen einzigen. Dieser kann aber natürlich ein Tupel mit mehreren Elementen sein.
Antworten