L' **opérateur de déballage peut être utilisé pour passer des kwargs d'une fonction aux kwargs d'une autre fonction. Considérez ce code: (les retours à la ligne ne semblent pas être autorisés dans les commentaires) def a(**kw): print(kw), et def b(**kw): a(kw). Ce code générera une erreur car kwargs est en fait un dictionnaire, et sera interprété comme un argument régulier du dicttype. C'est pourquoi changer def b(**kw): a(kw)en def b(**kw): a(**kw)décompressera kwet résoudra les erreurs.
Benj
10
Comme d'autres l'ont souligné, vous pouvez faire ce que vous voulez en passant un dict. Il existe différentes manières de construire un dict. Celui qui préserve le keyword=valuestyle que vous avez tenté est d'utiliser le dict intégré:
keywords = dict(keyword1 ='foo', keyword2 ='bar')
Notez la polyvalence de dict; tout cela produit le même résultat:
ah, je ne faisais pas attention. Ça devrait être mieux maintenant.
David Z
3
Donc, quand je suis venu ici, je cherchais un moyen de passer plusieurs ** kwargs dans une fonction - pour une utilisation ultérieure dans d'autres fonctions. Parce que cela, pas si surprenant que cela, ne fonctionne pas:
def func1(**f2_x,**f3_x):...
Avec un certain codage `` expérimental '', je suis venu à la manière évidente de le faire:
Réponses:
Oui. Vous le faites comme ceci:
L'exécution de ceci en Python confirme que ceux-ci produisent des résultats identiques:
la source
**
opérateur de déballage peut être utilisé pour passer des kwargs d'une fonction aux kwargs d'une autre fonction. Considérez ce code: (les retours à la ligne ne semblent pas être autorisés dans les commentaires)def a(**kw): print(kw)
, etdef b(**kw): a(kw)
. Ce code générera une erreur car kwargs est en fait un dictionnaire, et sera interprété comme un argument régulier dudict
type. C'est pourquoi changerdef b(**kw): a(kw)
endef b(**kw): a(**kw)
décompresserakw
et résoudra les erreurs.Comme d'autres l'ont souligné, vous pouvez faire ce que vous voulez en passant un dict. Il existe différentes manières de construire un dict. Celui qui préserve le
keyword=value
style que vous avez tenté est d'utiliser le dict intégré:Notez la polyvalence de
dict
; tout cela produit le même résultat:la source
Voulez-vous dire un dict? Sûr que vous pouvez:
la source
Donc, quand je suis venu ici, je cherchais un moyen de passer plusieurs ** kwargs dans une fonction - pour une utilisation ultérieure dans d'autres fonctions. Parce que cela, pas si surprenant que cela, ne fonctionne pas:
Avec un certain codage `` expérimental '', je suis venu à la manière évidente de le faire:
Cela s'imprime comme prévu:
la source
python 3.5
leFoo(**arg1, **arg2)
est possible