funciones - argumentos opcionales python
¿Cómo enviar un diccionario a una función que acepta** kwargs? (4)
Tengo una función que acepta parámetros de palabras clave comodín:
def func(**kargs):
doA
doB
¿Cómo le envío un diccionario?
No está claro al 100% por tu pregunta, pero si quieres pasar un kwargs
través de kwargs
, simplemente haces que el dict sea parte de otro 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
Entonces puedes capturar 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
Uso este último mucho cuando tengo el mismo conjunto de opciones que se pasa a diferentes funciones, pero algunas funciones solo usan algunas de las opciones (espero que tenga sentido ...). Pero, por supuesto, hay un millón de maneras de hacerlo. Si elaboras un poco tu problema, lo más probable es que podamos ayudarte mejor.
Solo usa func(**some_dict)
para llamarlo.
Esto se documenta en la sección 4.7.4 del tutorial de python .
Tenga en cuenta que el mismo dictado no se pasa a la función. Se crea una nueva copia, por lo que some_dict is not kwargs
.
para Python 3.6 simplemente ponga ** antes del nombre del diccionario
def lol(**kwargs):
for i in kwargs:
print(i)
my_dict = {
"s": 1,
"a": 2,
"l": 3
}
lol(**my_dict)
func(**mydict)
esto significará kwargs = mydict dentro de la función
Todas las claves de mydict deben ser cadenas.