Warum können Standardargumente nicht vor erforderlichen Argumenten stehen?
In Python wird ein SyntaxError ausgelöst, wenn Nicht-Standardargumente auf Standardargumente folgen die Parameterliste einer Funktion. Diese Einschränkung besteht, um die eindeutige Interpretation von Argumentwerten durch den Interpreter sicherzustellen.
Beachten Sie die folgende Funktionsdefinition:
def fun1(a="who is you", b="True", x, y): print a, b, x, y
Dieser Code löst einen SyntaxError aus, da die erforderlichen Parameter x und y folgen die Standardparameter a und b.
Erforderliche Argumente haben Vorrang
Erforderliche Parameter müssen immer vor allen Standardparametern in der Parameterliste einer Funktion platziert werden. Dies liegt daran, dass erforderliche Parameter obligatorisch sind, während Standardparameter optional sind. Syntaktisch wäre der Interpreter nicht in der Lage zu bestimmen, welche Werte zu welchen Argumenten passen, wenn sie gemischt würden.
Beispiel
Der folgende Code läuft fehlerfrei, da die erforderlichen Parameter x und y werden vor den Standardparametern a und b platziert:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
Schlüsselwortargumente
Schlüsselwortargumente können verwendet werden, um eine Funktion mit Argumenten in beliebiger Reihenfolge aufzurufen. Die Reihenfolge der Parameter in der Parameterliste der Funktion bestimmt jedoch immer noch, welche Werte welchen Argumenten zugewiesen werden.
Zum Beispiel mit der obigen Funktionsdefinition:
def fun1(x, y, a="who is you", b="True"): print a, b, x, y
Der folgende Code lautet gültig:
fun1("ok a", "ok b", 1) # 1 is assigned to x, "ok a" to a, "ok b" to b, "True" to y
Wenn die Parameter jedoch nicht mit Standardwerten deklariert würden:
def fun1(x, y, a, b): print a, b, x, y
Der folgende Code würde einen TypeError auslösen:
fun1("ok a", "ok b", 1) # 3 arguments instead of 4
Daher Standardargumente sind nützlich, um optionale Argumente zuzulassen oder fehlende Argumente zu überspringen, wenn Schlüsselwortargumente verwendet werden.
Das obige ist der detaillierte Inhalt vonWarum müssen in Python-Funktionsdefinitionen erforderliche Argumente vor Standardargumenten stehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!