Mehr Kwargs in eine Funktion übergeben als ursprünglich eingestellt

7

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!

    
deadstump 23.08.2012, 14:16
quelle

2 Antworten

8

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.

    
Exelian 23.08.2012, 14:22
quelle
16

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.

    
Martijn Pieters 23.08.2012 14:17
quelle

Tags und Links