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

Barbara Streisand
Freigeben: 2024-10-31 23:33:28
Original
640 Leute haben es durchsucht

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
Nach dem Login kopieren

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"):
    ...
Nach dem Login kopieren

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

fun1(1, "ok")  # 1 assigned to x, "ok" assigned to a or b?
Nach dem Login kopieren

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"):
    ...
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!