Ich habe eine Funktion mit einigen benannten Parametern und ein Wörterbuch, das Schlüssel mit diesen Namen sowie einige andere Schlüssel enthält. Ich möchte die Funktion mit Werten aus dem Wörterbuch aufrufen.Gibt es eine ordentliche (Python?) Möglichkeit, benannte Parameter Standardwerte in Python bei einer Bedingung zu verwenden?
- Ich kann nicht
**data
verwenden, weil Python wirdTypeError: unexpected keyword argument
erhöhen wegen der zusätzlichen Tasten. - Das dict enthält möglicherweise keine Schlüssel, daher kann ich die Schlüssel nicht referenzieren, ohne zu überprüfen, ob sie existieren (und ich möchte keinen Standard von
get
übergeben). - Ich kann die Funktion nicht umschreiben, weil es in einer separaten Bibliothek ist.
Wie kann ich nur die Schlüssel entpacken, die den Funktionsparametern entsprechen?
def do_something(arg1=None, arg2=''):
...
data = {'arg1': 1, 'arg2': 2, 'other': 3}
# doesn't work if key doesn't exist
do_something(arg1=data['arg1'], arg2=data['arg2'])
# too verbose, hard to extend
if 'arg1' in data:
do_something(arg1=data['arg1'], arg2=data['arg2'])
else:
do_something(arg2=data['arg2'])
'do_something (** d)'? – YOU
Auch verwandt: http://stackoverflow.com/questions/1769403/understanding-kwargs-in-python – mgilson
@YOU: Nein, das 'd' enthält mehr Schlüssel als diejenigen, die ich an die Funktion übergeben muss. –