Danke, das macht Sinn.
Wobei mir jetzt auch bewusst wird, dass ich mir das mit den positionalen und Keyword-Argumenten nochmal genauer anschauen muss.
Wenn ich das richtig verstehe ist es also so: Angenommen ich habe eine Funktion mit 3 Parametern wie oben.
Wenn ich y nicht als Keyword in der neuen Funktion übergeben möchte sondern 'ganz normal' und x und z praktisch einfrieren will, dann ist die einzige Möglichkeit das zu machen so:
, also alles vor dem variablen Parameter positional und alles dahinter als Keyword.
Wenn ich jetzt eine Funktion habe:
Code: Alles auswählen
def test(a, b, c, d):
print("a:", a, "b:", b, "c:", c, "d:", d)
Und ich möchte a und c "einfrieren" und b und d wiederum normal und nicht als Keyword übergeben, dann ist das unmöglich? Zumindest sollte es nach meinem Verständnis unmöglich sein, d positional zu übergeben.
Ich denke meine Verwirrung stammt daher, dass folgende Sachen nicht das gleiche sind:
Code: Alles auswählen
def f(x, y, z):
print("x:", x, "y:", y, "z:", z)
f2 = partial(f, x=1, y=2)
f3 = partial(f, 1, 2)
f2(1)
f3(1)
Für mich etwas verwirrend, dass bei f2(1) die 1 nochmal als x Wert übergeben wird. Das mit den Keyword Argumenten muss ich mir nochmal genau angucken. Auf der anderen Seite ist ja ja egal ob ich f mit den positionalen oder Keyword Argumenten aufrufe:
Am Anfang alles etwas verwirrend