Wahrscheinlich verwechseln Sie die Funktionsdefinition und die Funktionsaufrufsyntax etwas.
patch1
ist kein Schlüsselwort arg, es ist ein Positionsarg mit einem voreingestellten Argumentwert.
*patches
ist eine Argumentliste und kein Positionsargument.
Bitte sehen Sie sich diesen Abschnitt in den offiziellen Anleitungen an:
Lassen Sie mich nun die Hauptpunkte zusammenfassen, die diese Funktion als Beispiel verwenden:
%Vor%
Funktionsdefinition
Sie haben eine Reihe von Argumenten, die explizit durch den Namen definiert werden ( a1
, a2
und a3
), wobei a3
standardmäßig von None
initialisiert wird, wenn sie während des Aufrufs nicht angegeben wird. Die Argumente a1
und a2
müssen in jedem gültigen Aufruf dieser Funktion angegeben werden.
Die Funktion kann mit zusätzlichen Argumenten aufgerufen werden, die im Verzeichnis kwargs
(nach Schlüsselwort) oder in der Liste args
(wenn nicht durch Schlüsselwort geliefert) erscheinen.
Wenn args
und kwargs
in der Funktionsdefinition nicht vorhanden wären, könnte der Aufrufer keine weiteren Argumente hinzufügen, außer denen, die explizit in der Funktionsdefinition für den Funktionsaufruf benannt wurden.
In der Funktionsdefinition müssen Sie zuerst die expliziten Argumente ohne Standardinitialisierer, dann die expliziten Argumente mit Standardinitialisierer, drittens die Argumentliste und zuletzt das Schlüsselwortargumentwörterbuch angeben.
Funktionsaufruf
Es gibt verschiedene Möglichkeiten, die Funktion aufzurufen. Zum Beispiel führen die folgenden Aufrufe zu gleichen Ergebnissen:
%Vor%
Das heißt, die Funktionsargumente werden entweder durch ihre Position (Positions- oder Nicht-Schlüsselwortargumente) oder durch ihren angegebenen Namen (Schlüsselwortargumente) aufgelöst.
Wenn Sie die Funktion aufrufen, müssen Sie zuerst die Nicht-Schlüsselwort-Argumente und zuletzt die Schlüsselwort-Argumente eingeben, z. B.
%Vor%
Nun werden Positionsargumente, die nicht in die Liste der angegebenen Argumente in der Funktionsdefinition passen, an die Argumentliste *args
angehängt, und Schlüsselwortargumente, die nicht in die Liste der angegebenen Argumente in der Funktion passen Die Definition wird in das Schlüsselwort-Argumentwörterbuch **kwargs
eingefügt.