Warum ist es illegal, Nicht-Standardargumente nach Standardargumenten zu deklarieren?
In Python ist es wichtig, die richtige Reihenfolge der Argumente einzuhalten beim Definieren einer Funktion. Nicht-Standardargumente müssen vor allen Standardargumenten stehen. Diese Einschränkung ergibt sich aus der Tatsache, dass erforderliche Parameter vor optionalen Parametern (Standardargumenten) angegeben werden müssen.
SyntaxError: Nicht-Standardargument folgt Standardargument
Dieser Fehler tritt auf wenn Sie eine Funktion mit nicht standardmäßigen Argumenten nach Standardargumenten deklarieren, wie im folgenden Beispiel:
<code class="python">def fun1(a="who is you", b="True", x, y): print(a, b, x, y)</code>
Unerwartetes Zuweisungsproblem
Mischung von Standard und Nicht-Standard Argumente führen zu syntaktischer Mehrdeutigkeit. Betrachten wir Funktionsaufrufe mit der obigen Funktion:
<code class="python">func1("ok a", "ok b", 1) # Is 1 assigned to x or a? func1(1) # Is 1 assigned to a or x? func1(1, 2) # Which arguments are mapped to which parameters?</code>
In solchen Fällen ist es für den Interpreter unmöglich, die richtigen Zuweisungen zu bestimmen.
Referenz zu O'Reilly - Core-Python
Gemäß O'Reilly - Core-Python sollten alle erforderlichen Parameter vor allen Standardargumenten in einer Funktionsdefinition stehen. Dadurch wird sichergestellt, dass die Funktion mit dem minimalen Satz erforderlicher Parameter aufgerufen werden kann.
Aufruf von Schlüsselwortargumenten
Schlüsselwortargumente ermöglichen Positionsargumente außerhalb der Reihenfolge und können übersprungen werden über fehlende Argumente, wenn sie in Verbindung mit Standardargumenten verwendet werden. Beispielsweise ist der folgende Funktionsaufruf mit Schlüsselwortargumenten syntaktisch korrekt:
<code class="python">def fun1(x, y, a="who is you", b="True"): print(a, b, x, y) # Call with keyword arguments fun1(4, y=5, a="Python is awesome")</code>
Fazit
Um SyntaxError zu vermeiden und den logischen Ablauf der Zuweisung von Argumenten zu Parametern aufrechtzuerhalten, Es ist wichtig, sich die richtige Platzierung von Argumenten innerhalb einer Funktionsdefinition zu merken. Deklarieren Sie immer erforderliche Parameter (nicht standardmäßige Argumente) vor allen optionalen Parametern (Standardargumente).
Das obige ist der detaillierte Inhalt vonWarum ist es in Python illegal, Nicht-Standardargumente nach Standardargumenten zu deklarieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!