Heim  >  Artikel  >  Backend-Entwicklung  >  Warum müssen Nicht-Standardargumente in Python-Funktionsdefinitionen vor Standardargumenten stehen?

Warum müssen Nicht-Standardargumente in Python-Funktionsdefinitionen vor Standardargumenten stehen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 23:33:28630Durchsuche

Why Do Non-Default Arguments Have to Precede Default Arguments in Python Function Definitions?

Enthüllung des Syntaxfehlers bei der Reihenfolge von Funktionsargumenten

Warum stößt der folgende Python-Code auf einen SyntaxError?

def fun1(a="who is you", b="True", x, y):
    print a,b,x,y

Der Grund für den Fehler liegt darin, dass nicht standardmäßige Argumente (x und y) in der Funktionssignatur vor Standardargumenten (a und b) stehen müssen. Erforderliche Parameter müssen vor optionalen Parametern mit Standardwerten stehen.

Die Gefahr gemischter Modi

Das Erlauben, dass nicht standardmäßige Argumente auf Standardargumente folgen, würde zu Mehrdeutigkeiten für den Interpreter führen Bestimmen, welche Werte welchen Argumenten entsprechen. Stellen Sie sich das folgende Szenario vor:

def fun1(a, b, x="who is you", y="True"):
    ...

Angenommen, wir rufen diese Funktion mit den folgenden Argumenten auf:

fun1(1, "ok")  # 1 assigned to x, "ok" assigned to a or b?

Ohne die Ordnungsregel wäre es unmöglich, Argumenten eindeutig Werte zuzuweisen.

Korrekte Syntax für Funktionsargumente

Um Funktionen korrekt zu definieren, Standardargumente müssen immer auf Nicht-Standardargumente folgen. Die korrekte Syntax für die Beispielfunktion lautet:

def fun1(x, y, a="who is you", b="True"):
    ...

Diese Syntax stellt sicher, dass der Interpreter Argumenten deterministisch Werte zuweisen kann, selbst wenn Schlüsselwortargumente vorhanden sind und Argumente fehlen.

Rettung von Schlüsselwortargumenten

Mit Schlüsselwortargumenten können Sie Standardwerte überschreiben, indem Sie den Argumentnamen explizit angeben. Dies ist besonders nützlich, um fehlende Argumente zu überspringen. Betrachten Sie beispielsweise den folgenden Aufruf von fun1:

fun1(x=1, b="False")  # Override default value of b

Fazit

Die Beschränkung auf Nicht-Standardargumente im Anschluss an Standardargumente gewährleistet eine klare und eindeutige Interpretation von Funktionsaufrufen , um Syntaxfehler und Laufzeitfehler aufgrund falscher Argumentzuweisung zu verhindern.

Das obige ist der detaillierte Inhalt vonWarum müssen Nicht-Standardargumente in Python-Funktionsdefinitionen vor Standardargumenten stehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn