Vorbei an ein Wörterbuch, das eine Funktion als Schlüsselwort-Parameter
Möchte ich eine Funktion aufrufen, die in python mit einem Wörterbuch.
Hier einige code:
d = dict(param='test')
def f(param):
print(param)
f(d)
Diese Drucke {'param': 'test'}
aber ich möchte es einfach ausdrucken test
.
Ich möchte es ähnlich funktionieren weitere Parameter:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Herausgefunden, dass es für mich am Ende. Es ist einfach, ich war nur fehlt der * * - operator zum entpacken der Wörterbuch
Also mein Beispiel wird zu:
**kwargs
zum Beispiel; Sie werden erwarten, dass eine entpackt Liste der Argumente, nicht nur ein Lexikon der Argumente.ast.literal_eval(someText)
, konnten die in konvertierensomeText
in ein Wörterbuch; dann könnten Sie packen Sie es in eine Methode (undsomeText
werden konnte, die zuvor analysiert, um match-keywords in die Methode besser, wenn Sie wollen, alias Schlüsselwörter oder so). So, das wäre ein Weg, um für die Dateneingabe ("fertig", um die trigger-Methoden), wo es nicht erforderlich ist, mehrere Formulare, Boxen, Maus-Klicks, etc. in einer Weise, die ohne Bearbeitung.py
Dateien, die sich selbst die ganze Zeit (und es ist ein Beispiel für möglicherweise unzählige Auspacken, wo ein Wörterbuch nützlich sein könnte).Ein paar zusätzliche details, die vielleicht hilfreich sein, zu wissen (Fragen hatte ich nach der Lektüre dieses und ging und getestet):
Beispiele:
Nummer 1: Die Funktion kann Parameter haben, die nicht im Wörterbuch enthalten
Nummer 2: können Sie nicht überschreiben die parameter, die bereits im Wörterbuch
Nummer 3: Das Wörterbuch kann nicht über Parameter, die nicht in der Funktion.
Erbetenen Kommentare, eine Lösung zu Nummer 3 ist es zu filtern, das Wörterbuch basiert auf der keyword-Argumente in der Funktion:
Weitere option ist es, zu akzeptieren (und zu ignorieren) zusätzliche kwargs in Ihrer Funktion:
Beachten Sie weiter, als Sie verwenden können, positions-Argumente und-Listen oder Tupel in praktisch der gleichen Weise wie kwargs, hier ist eine erweiterte Beispiel die Einbeziehung alles oben:
'hello {greeting} {name}'.format( **{'name': 'Andrew', 'greeting': 'Mr'})
In python, das nennt man "entpacken", und Sie finden das ein bisschen in die tutorial. Die Dokumentation von it sucks, ich einverstanden, vor allem, weil, wie fantasically nützlich es ist.
Hier ya gehen - funktioniert nur anderen iterierbar: