que tienen una función que acepta parámetros de palabras clave comodín:¿Cómo enviar un diccionario a una función que acepte ** kwargs?
def func(**kargs):
doA
doB
¿Cómo envío un diccionario?
que tienen una función que acepta parámetros de palabras clave comodín:¿Cómo enviar un diccionario a una función que acepte ** kwargs?
def func(**kargs):
doA
doB
¿Cómo envío un diccionario?
Sólo tiene que utilizar func(**some_dict)
llamarlo.
Esto está documentado en section 4.7.4 of python tutorial.
Tenga en cuenta que la misma dict
es no pasado a la función. Se crea una nueva copia, por lo que some_dict is not kwargs
.
_ "Se ha creado una copia nueva" _ - ¿Dónde encuentro documentación oficial para este comportamiento? – jan
func(**mydict)
esto significará kwargs = mydict dentro de la función
todas las llaves del mydict deben ser cadenas
No es 100% claro por su pregunta, pero si desea pasar una dict
a través de kwargs
, que acaba de hacer que dict una parte de otra dict, así:
my_dict = {} #the dict you want to pass to func
kwargs = {'my_dict': my_dict } #the keyword argument container
func(**kwargs) #calling the function
A continuación, puede coger my_dict
en la función:
def func(**kwargs):
my_dict = kwargs.get('my_dict')
o ...
def func(my_dict, **kwargs):
#reference my_dict directly from here
my_dict['new_key'] = 1234
Utilizo mucho este último cuando tengo el mismo conjunto de opciones pasadas a diferentes funciones, pero algunas funciones solo usan algunas de las opciones (espero que tenga sentido ...). Pero hay, por supuesto, un millón de formas de hacerlo. Si elabora un poco sobre su problema, lo más probable es que lo ayudemos mejor.
para Python 3.6 ** sólo hay que poner antes de que el nombre del diccionario
def lol(**kwargs):
for i in kwargs:
print(i)
my_dict = {
"s": 1,
"a": 2,
"l": 3
}
lol(**my_dict)
posible duplicado de [Conversión de Python dict a kwargs?] (Http://stackoverflow.com/questions/5710391/converting-python-dict -to-kwargs) – Olli