Alle erforderlichen Parameter müssen vor Standardargumenten stehen. Einfach, weil sie obligatorisch sind, Standardargumente jedoch nicht. Syntaktisch wäre es für den Interpreter unmöglich zu entscheiden, welche Werte mit welchen Argumenten übereinstimmen, wenn gemischte Modi zulässig wären. A SyntaxErrorwird ausgelöst, wenn die Argumente nicht in der richtigen Reihenfolge angegeben werden:
Lassen Sie uns mit Ihrer Funktion einen Blick auf Schlüsselwortargumente werfen.
def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
Angenommen, es ist erlaubt, die Funktion wie oben zu deklarieren. Dann können wir mit den obigen Deklarationen die folgenden (regulären) Positions- oder Schlüsselwortargumentaufrufe durchführen:
func1("ok a", "ok b", 1) # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?
Wie Sie die Zuweisung von Variablen im Funktionsaufruf vorschlagen, wie Standardargumente zusammen mit Schlüsselwortargumenten verwendet werden.
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Referenz O'Reilly - Core-Python
Wobei diese Funktion die Standardargumente verwendet, die für die obigen Funktionsaufrufe syntaktisch korrekt sind. Das Aufrufen von Schlüsselwortargumenten erweist sich als nützlich, um Positionsargumente außerhalb der Reihenfolge bereitstellen zu können. In Verbindung mit Standardargumenten können sie jedoch auch verwendet werden, um fehlende Argumente zu "überspringen".
def myfunction(position_arguments, *arguments, **keywords):"...."