return x, y; x weiterverwenden?

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
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Hallo,

ich will in etwa folgendes machen:

Code: Alles auswählen

class Eins:
   def func1(self, par1, par2):
      ergebnis1 = par1 * par2
      ergebnis2 = par1 + par2
      return ergebnis1, ergebnis2

class Zwei:
   def func2(self, par3, par4):
      ergebnis3 = par3 + par4
      return ergebnis3

def main():
   p1 = 1
   p2 = 2
   c1 = Eins()
   c2 = Zwei()
   p3 = c1.func1(p1,p2)    #Wie kann ich in p3 das Argument ergebnis1 bekommen?
   p4 = c1.func1(p1,p2)    #Wie kann ich in p4 das Argument ergebnis2 bekommen?
   zahl = c2.func2(p3, p4)
   print(zahl)   #5
Da ich ja beim Aufruf von func1 zwei Argumente zurückbekomme, ich aber nur das Argument ergebnis1 für p3 benötige (bzw. ergebnis2 für p4) für, muss ich die zurückgegebenen Argumente irgendwie trennen. Wie funktioniert das? Ich habe nirgends in der Literatur was dazu gefunden.

Bitte helft mir weiter.

Gruß, mep
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Code: Alles auswählen

a,b = 1,2
mfg, querdenker
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

ich bin mir nicht ganz sicher, ob du das meinst, aber es könnte sein, dass du "tuple unpacking" (oder so) suchst.

Code: Alles auswählen

a, x = func1(1,2)
x, b = func1(3,4)

result = func2(a, b)
alternativ könntest du auch hässlicherweise mit indizes arbeiten:

Code: Alles auswählen

a = func1(1,2)
b = func1(3,4)

result = func2(a[0], b[1])
allerdings dürfte jedem, der ein Minimalmaß an Ästhetik hat, dies als die Augenkrebsfördernde Lösung erscheinen.
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

ahhh, vielen Dank für die schnellen Antworten, so dürfte es funktionieren.
Mir war nicht klar, dass die Argumente in return als Tupel zusammengefasst werden.
DANKE!
Antworten