¿Existe alguna forma más sucinta de escribir esto?Pasar argumentos de palabras clave a una función cuando los nombres de las variables locales son los mismos que los nombres de los parámetros de funciones
f(a=a, b=b, c=c, d=d, e=e)
Antecedentes: Tengo una función con demasiados argumentos
f(a, b, c, d, e):
pass
que mi programa tengo las variables locales que se denominan exactamente igual que los parámetros de la función.
a, b, c, d, e = range(5)
Me gustaría llamar a la función con argumentos de palabra clave. Dado que las variables tienen el mismo nombre, así es como se vería la llamada.
g = f(a=a, b=b, c=c, d=d, e=e) # this can get very long
Por supuesto, puedo pasar los aruguments utilizando la posición en lugar de palabras clave como esto
g = f(a, b, c, d, e)
Pero a
, b
, c
, d
, e
son sólo los nombres de las variables en este ejemplo y se es fácil ver el orden correcto. Sin embargo, desafortunadamente las variables en mi programa se nombran de manera más complicada y no hay un orden natural fácilmente discernible. Así que realmente me gusta pasarlos por palabra clave para evitar cualquier error.
Punto menor: ¿no debería ser 'locales'? – senderle
El 'lambda' tiene su propio alcance, por lo que las variables locales de su ámbito contenedor no están en' locals() 'si se usa dentro del lambda (pero estarán en' globals() '). –
Wunderbar! Esto es exactamente lo que estaba buscando. ¡Gracias! Estoy de acuerdo con @senderle en que podría usar 'locals()' en lugar de 'globals()'. –