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

Warum müssen in Python-Funktionsdefinitionen erforderliche Argumente vor Standardargumenten stehen?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 22:24:02507Durchsuche

Why must required arguments precede default arguments in Python function definitions?

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!

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