Gibt es eine Möglichkeit mehr Kwargs in eine Funktion zu senden als im Funktionsaufruf gefordert?
Beispiel:
%Vor% Gibt es eine Möglichkeit, mybigdict
ohne den Fehler zu übergeben? 'c'
würde nie in mydef
in meiner idealen Welt verwendet werden und würde einfach ignoriert werden.
Danke, mein Graben ist nicht mit dem, wonach ich suche, entstanden.
Bearbeiten: Der Code wurde etwas korrigiert. Die mydef(a, b, **kwargs)
war die Form, nach der ich gesucht habe, aber die inspect Funktion args war für mich eine neue Sache und definitiv etwas für meine Toolbox. Danke an alle!
Zur Klärung der Antwort von Martijn Pieters (aus Gründen der Klarheit). Es ist möglich, wenn Sie die Funktionssignatur ändern in:
def mydef(a, b, **kwargs):
Dies bedeutet, dass dies ohne Änderung der Signatur nicht möglich ist. Aber wenn das kein Problem ist, wird es funktionieren.
Nein. Wenn die Funktionsdefinition nicht mehr Parameter zulässt (mit der Syntax **kwargs
catch-all), können Sie keine Methode mit mehr als den definierten Argumenten aufrufen.
Sie können die Funktion überprüfen und alle Argumente entfernen, die sie jedoch nicht akzeptiert:
%Vor% Ich verwende die Funktion inspect.getargspec()
, um zu prüfen, ob die aufrufbare Datei% unterstützt. co_de% catch-all via **kwarg
, und wenn nicht, benutze ich die .keywords
Information, um alles zu entfernen, was die Methode nicht unterstützt.