argumente von Funktionen

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
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Servus,

Angenommen ich habe eine Funktion:

Code: Alles auswählen

def do_something_with_function(x_array,y_array,function,*arguments,a=default_val1,b=default_val2):
......
function(*arguments)
......
Nun möchte ich die Funktion aufrufen:

Code: Alles auswählen

def some_function(x1,x2,...):
      return f(x1,x2,...)

do_something_with_function(x_array=x,y_array=y,function=some_function,argument1,argument2,argument3,.....,a=irgendein_wert1,irgendein_wert2)
Wie mache ich beim aufrufen deutlich, dass die letzten beiden Argumente nicht zur Funktion gehören? und das nur argument1,.... der Funktion übergeben werden sollen?
Sirius3
User
Beiträge: 17778
Registriert: Sonntag 21. Oktober 2012, 17:20

@möppi: Du kannst nicht Keyword-Arguments mit Positional-Arguments mischen. Normalerweise werden die Argumente einer Funktion als ein arguments-Tuple übergeben:

Code: Alles auswählen

def do_something_with_function(x_array, y_array, function, arguments, a=default_val1, b=default_val2):
    ...
    function(*arguments)
    ...

def some_function(x1,x2,...):
      return f(x1,x2,...)
 
do_something_with_function(x_array=x, y_array=y, function=some_function, arguments=(argument1,argument2,argument3,.....), a=irgendein_wert1, b=irgendein_wert2)
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Sirius3 hat geschrieben:@möppi: Du kannst nicht Keyword-Arguments mit Positional-Arguments mischen. Normalerweise werden die Argumente einer Funktion als ein arguments-Tuple übergeben:

Code: Alles auswählen

def do_something_with_function(x_array, y_array, function, arguments, a=default_val1, b=default_val2):
    ...
    function(*arguments)
    ...

def some_function(x1,x2,...):
      return f(x1,x2,...)
 
do_something_with_function(x_array=x, y_array=y, function=some_function, arguments=(argument1,argument2,argument3,.....), a=irgendein_wert1, b=irgendein_wert2)
Danke für deine Antwort. Ich habe es jetzt so wie du gemacht, aber aus irgendwelchen Gründen, zeigt mir der Compiler bei der Definition der Funktion do_something_with_function einen Syntax Fehler an. Da steht dann einfach nur die etwas spärliche Fehlermeldung:
SyntaxError: invalid syntax
mit einem Pfeil bei a. Ich dachte das liegt, daran, dass die Zuordnung der Argumente nicht eindeutig ist. Da diese Problem jedoch jetzt umgangen wurde, kann es daran nicht liegen.
Sirius3
User
Beiträge: 17778
Registriert: Sonntag 21. Oktober 2012, 17:20

@möppi: es wäre gut, wenn Du den entsprechenden Code dazu zeigen würdest.
möppi
User
Beiträge: 39
Registriert: Samstag 29. März 2014, 09:18

Sorry,

Da war eine kleine Dummheit eingebaut. Hat sich erledigt. Danke
Antworten