El **operador de desembalaje se puede utilizar para pasar kwargs de una función a los kwargs de otra función. Considere este código: (las líneas nuevas no parecen estar permitidas en los comentarios) def a(**kw): print(kw)y def b(**kw): a(kw). Este código generará un error porque kwargs es en realidad un diccionario y se interpretará como un argumento normal del dicttipo. Es por eso que cambiar def b(**kw): a(kw)a def b(**kw): a(**kw)descomprimirá kwy resolverá los errores.
Benj
10
Como han señalado otros, puede hacer lo que quiera pasando un dictado. Hay varias formas de construir un dictamen. Uno que conserva el keyword=valueestilo que intentó es usar el dict incorporado:
keywords = dict(keyword1 ='foo', keyword2 ='bar')
Tenga en cuenta la versatilidad de dict; todos estos producen el mismo resultado:
ah, no estaba prestando atención. Debería estar mejor ahora.
David Z
3
Entonces, cuando vine aquí, estaba buscando una manera de pasar varios ** kwargs en una función, para usarlos más tarde en otras funciones. Porque esto, no es tan sorprendente, no funciona:
def func1(**f2_x,**f3_x):...
Con algo de codificación 'experimental' propia llegué a la forma obvia de cómo hacerlo:
Respuestas:
Si. Lo haces así:
Ejecutar esto en Python confirma que estos producen resultados idénticos:
fuente
**
operador de desembalaje se puede utilizar para pasar kwargs de una función a los kwargs de otra función. Considere este código: (las líneas nuevas no parecen estar permitidas en los comentarios)def a(**kw): print(kw)
ydef b(**kw): a(kw)
. Este código generará un error porque kwargs es en realidad un diccionario y se interpretará como un argumento normal deldict
tipo. Es por eso que cambiardef b(**kw): a(kw)
adef b(**kw): a(**kw)
descomprimirákw
y resolverá los errores.Como han señalado otros, puede hacer lo que quiera pasando un dictado. Hay varias formas de construir un dictamen. Uno que conserva el
keyword=value
estilo que intentó es usar el dict incorporado:Tenga en cuenta la versatilidad de
dict
; todos estos producen el mismo resultado:fuente
¿Te refieres a un dict? Seguro que puede:
fuente
Entonces, cuando vine aquí, estaba buscando una manera de pasar varios ** kwargs en una función, para usarlos más tarde en otras funciones. Porque esto, no es tan sorprendente, no funciona:
Con algo de codificación 'experimental' propia llegué a la forma obvia de cómo hacerlo:
Esto se imprime como se esperaba:
fuente
python 3.5
laFoo(**arg1, **arg2)
es posible