Der **Entpackungsoperator kann verwendet werden, um kwargs von einer Funktion an die kwargs einer anderen Funktion zu übergeben. Betrachten Sie diesen Code: (Zeilenumbrüche scheinen in Kommentaren nicht zulässig zu sein) def a(**kw): print(kw)und def b(**kw): a(kw). Dieser Code generiert einen Fehler, da kwargs eigentlich ein Wörterbuch ist und als reguläres Argument des dictTyps interpretiert wird . Aus diesem Grund werden die Fehler durch Ändern def b(**kw): a(kw)von def b(**kw): a(**kw)entpackt kwund behoben.
Benj
10
Wie andere bereits betont haben, können Sie tun, was Sie wollen, indem Sie ein Diktat verabschieden. Es gibt verschiedene Möglichkeiten, ein Diktat zu erstellen. Einer, der den von keyword=valueIhnen versuchten Stil beibehält, ist die Verwendung des integrierten Diktats :
keywords = dict(keyword1 ='foo', keyword2 ='bar')
Beachten Sie die Vielseitigkeit von dict; Alle diese Ergebnisse führen zu demselben Ergebnis:
Ah, ich habe nicht aufgepasst. Sollte jetzt besser sein.
David Z
3
Als ich hierher kam, suchte ich nach einer Möglichkeit, mehrere ** kwargs in einer Funktion zu übergeben - für die spätere Verwendung in weiteren Funktionen. Weil dies nicht so überraschend nicht funktioniert:
def func1(**f2_x,**f3_x):...
Mit einer eigenen 'experimentellen' Codierung bin ich auf die offensichtliche Art und Weise gekommen, wie es geht:
Antworten:
Ja. Du machst es so:
Wenn Sie dies in Python ausführen, wird bestätigt, dass diese zu identischen Ergebnissen führen:
quelle
**
Entpackungsoperator kann verwendet werden, um kwargs von einer Funktion an die kwargs einer anderen Funktion zu übergeben. Betrachten Sie diesen Code: (Zeilenumbrüche scheinen in Kommentaren nicht zulässig zu sein)def a(**kw): print(kw)
unddef b(**kw): a(kw)
. Dieser Code generiert einen Fehler, da kwargs eigentlich ein Wörterbuch ist und als reguläres Argument desdict
Typs interpretiert wird . Aus diesem Grund werden die Fehler durch Änderndef b(**kw): a(kw)
vondef b(**kw): a(**kw)
entpacktkw
und behoben.Wie andere bereits betont haben, können Sie tun, was Sie wollen, indem Sie ein Diktat verabschieden. Es gibt verschiedene Möglichkeiten, ein Diktat zu erstellen. Einer, der den von
keyword=value
Ihnen versuchten Stil beibehält, ist die Verwendung des integrierten Diktats :Beachten Sie die Vielseitigkeit von
dict
; Alle diese Ergebnisse führen zu demselben Ergebnis:quelle
Meinst du ein Diktat? Sicher kannst du:
quelle
Als ich hierher kam, suchte ich nach einer Möglichkeit, mehrere ** kwargs in einer Funktion zu übergeben - für die spätere Verwendung in weiteren Funktionen. Weil dies nicht so überraschend nicht funktioniert:
Mit einer eigenen 'experimentellen' Codierung bin ich auf die offensichtliche Art und Weise gekommen, wie es geht:
Dies wird wie erwartet gedruckt:
quelle
python 3.5
demFoo(**arg1, **arg2)
ist möglich