Frage zur Weitergabe von Parametern / Argumenten

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
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Hallo!

Ich hab ma ne Frage zu der Weitergabe von einigen Parametern.

Ein kleines Beispiel:

Ich habe die Funktion 'render'

Code: Alles auswählen

def render(self, default_ouput, tempfile, vars, *sonstige):
    print 'Der "default_ouput" schaut so aus: ' + default_ouput
    print 'Die Variable "tempfile" schaut so aus: ' + tempfile
    print 'Die Variable "vars" sollte ein Dictionary sein und schaut so aus: ' + vars
    # Die Werte werden spaeter mit Variablen aus TXT Dateien ersetzt
    # und werden via '' return '' an die Ausgangsfunktion (egal welche) zurueckgegeben
Soweit die Funktiion.

Nun möchte ich eben Inhalte von anderen Funktionen anhand von Variablen und deren Werte generieren.

Wie kann ich es machen, das es föllig egal ist, in welcher Reihenfolge die Variablen/Parameter an die Funktion '' render '' übergeben werden?

Das würde einiges vereinfachen ;)

Wenn noch Fragen zum Beispiel sind ;) einfach Fragen!


MfG EnTeQuAk
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hi entequak.

Ich hoffe ich hab dich richtig verstanden.

Code: Alles auswählen

[...]
render (vars={'key': 'spam'}, default_output="c:\\...",
           tempfile="tmp.tmp",)
Aber ich glaube dir gehts um *sonstige oder?

lg

EDIT:

Code: Alles auswählen

[...]
a=2
b=5
c="spam"
render (sonstige=(a,b,c),
            vars={'key': 'spam'}, 
            default_output="c:\\...",
            tempfile="tmp.tmp",)
Ist aber nicht getestet! Ich weiß das mit den *var und **vars erst seit gestern ^^
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Jain ;)


afaik ist es doch so, wenn ich die Funktion so angebe:

Code: Alles auswählen

def render(self, default_ouput, tempfile, vars, *sonstige):
    pass
Muss ich doch Werte, die andere Funktionen an ''render'' übergeben exakt in der Reihenfolge schreiben, wie ich sie bei ''render'' angegeben habe oder?

Bsp:

So weit ich weiß müsste es normalerweise so laufen:

Code: Alles auswählen

# Die Funktion, die 2 Werte engegennimmt:
def ichUebernehme(wert1, wert2):
    print wert1
    print wert2
Nun werden die Werte von der Funktion 'ichUebergebe' übergeben:

Code: Alles auswählen

def ichUebergebe():
    wert1 = 'Ich bin Wert1'
    wert2 = 'Ich bin Wert2'
    return ichUebernehme(wert2, wert1)
    # WICHTIG, WERTE WERDEN "andersherum" uebergeben!!
Und das kommt bei Raus:

Code: Alles auswählen

>>>ichUebergebe()
Wert2
Wert1
>>>
Und genau das will ich nicht.

Geht es, das die Variablen (wert1, wert2) wirklich nur Die Variablen wert1 und wert2 überschreiben. Und nicht, das von links nach Rechts übernommen wird?

Ich hoffe jetzt ist es etwas klarer.

MfG EnTeQuAk
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

EnTeQuAk hat geschrieben:Jain ;)


afaik ist es doch so, wenn ich die Funktion so angebe:

Code: Alles auswählen

def render(self, default_ouput, tempfile, vars, *sonstige):
    pass
Muss ich doch Werte, die andere Funktionen an ''render'' übergeben exakt in der Reihenfolge schreiben, wie ich sie bei ''render'' angegeben habe oder?
[...]
Nein musst du nicht exakt in der reinfolge schrieben. Deshalb ja mein Beispiel oben ;)

Code: Alles auswählen

def test1 (var1, var2, var3):
      print var1
      print var2
      print var3

def test2 ():
      a="ich bin var1"
      b="ich bin var2"
      c="ich bin var3"
      test1(var1=a, var3=c, var2=b)

     print "\n\n"
     test1(a, c, b)
>>
ich bin var1 
ich bin var2 
ich bin var3

ich bin var1
ich bin var3
ich bin var2 
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Achsooo! ;)

Mit dem Zuweisen der Werte hab ich gar nicht gerechnet :D

Dankeee! Du hast mir ne Menge Arbeit erspart ;)


MfG EnTeQuAk
Antworten