Seite 1 von 1

Parameter-Weitergabe

Verfasst: Montag 30. Oktober 2006, 12:20
von riven
Hallo,

Ich habe folgende Routine:

Code: Alles auswählen

def b(ib_CH1=False, b_CH2=False, b_CH3=False, b_CH4=False):
        if b_CH1:
            result1=channel(1)
            print len(result1)
            print result1
        if b_CH2:
            result2=channel(2)
            print len(result2)
            print result2
        if b_CH3:
            result3=channel(3)
            print len(result3)
            print result3
        if b_CH4:
            result4=channel(4)
            print len(result4)
            print result4

        x, y = [], []
        plot(x, y=False,y2=False,y3=False, y4=False)
Mein Ziel ist es, in plot die Funktionen zu aktivieren, die als Parameter in b gesendet wurden, sprich False soll False bleiben und die in b aktivierten Parameter sollen auch in plot als resultx mit entsprechender y-Zuweisung aktiviert werden.

Danke

Re: Parameter-Weitergabe

Verfasst: Montag 30. Oktober 2006, 12:27
von Whitie
Hallo,
ohne näher drauf zu gucken:

Code: Alles auswählen

def b(b_CH1=False, b_CH2=False, b_CH3=False, b_CH4=False):
        if b_CH1:
            result1=channel(1)
            print len(result1)
            print result1
        if b_CH2:
            result2=channel(2)
            print len(result2)
            print result2
        if b_CH3:
            result3=channel(3)
            print len(result3)
            print result3
        if b_CH4:
            result4=channel(4)
            print len(result4)
            print result4
        return [b_CH1, b_CH2, b_CH3, b_CH4]

x, y = [], []
plot(x, b(False,False,False, False))
Gruß, Whitie

Verfasst: Montag 30. Oktober 2006, 12:28
von Nirven
Wenn du die Parameter weiterreichen möchtest, dann schick sie einfach weiter, also

Code: Alles auswählen

        plot(x, y, ib_CH1, b_CH2, b_CH3, b_CH4)
x und y werden so auch mit übergeben in der Form wie sie in b angelegt wurden. Aber das sind in der Funktion leere Listen...

Edit:
@Whitie: Durch dein return kommt die Funktion nie beim "plot" an...

Edit2: Ts... einfach Fehler raus editieren während ich sie noch anmäkeln will ;)

Aber x ist immer noch leer, und y wird gar nicht übergeben (warum auch eine leere Liste übergeben?)

Re: Parameter-Weitergabe

Verfasst: Montag 30. Oktober 2006, 13:16
von BlackJack
riven hat geschrieben:

Code: Alles auswählen

def b(ib_CH1=False, b_CH2=False, b_CH3=False, b_CH4=False):
        if b_CH1:
            result1=channel(1)
            print len(result1)
            print result1
        if b_CH2:
            result2=channel(2)
            print len(result2)
            print result2
        if b_CH3:
            result3=channel(3)
            print len(result3)
            print result3
        if b_CH4:
            result4=channel(4)
            print len(result4)
            print result4

        x, y = [], []
        plot(x, y=False,y2=False,y3=False, y4=False)
Irgendwie verstehe ich nicht was Du genau möchtest. Also nur ein allgemeiner Hinweis: Das Du jeden Parameter mit dem gleichen Namen mit einer angehängten Zahl benennts, deutet darauf hin, dass man hier besser eine Sequenz statt einzelner Argumente übergeben sollte. Dann lässt sich die Funktion, so wie sie da steht, auch mit einer Schleife vereinfachen:

Code: Alles auswählen

def b(b_flags):
    for i, b_flag in enumerate(b_flags):
        if b_flag:
            result = channel(i + 1)
            print len(result)
            print result
    
    plot(list(), *b_flags)
Aufruf z.B. mit ``b((True, False, True, True))``.