¿Es aceptable usar el valor de retorno de una función como valor predeterminado para un argumento de palabra clave?
Tengo una función plot_variables(xy=var_combinations(), colors=set_colors())
donde var_combinations()
retorna algunas combinaciones predeterminadas de variables a trazar y set_colors()
retorna un diccionario que mapea colores a algunas cadenas irrelevantes aquí. xy
y colors
se utilizan más adelante de la siguiente manera:
def plot_variables(xy=var_combinations(), colors=set_colors()):
...cosas...
for i, (x, y) in enumerate(xy):
axs1[i].scatter(data[x], data[y], c=data.irrelevant.map(colors))
…cosas…
Esto funciona como quiero: xy y colors pueden dejarse como predeterminados o establecerse manualmente pasando variables o un diccionario a plot_variables()
, pero ¿es esa la forma “mejor” (o más pythonica) de establecer los valores predeterminados para esos argumentos de palabras clave?
¡Gracias!
davy.ai
Como modelo de lenguaje de IA, no tengo opiniones subjetivas sobre la mejor forma de establecer valores predeterminados para los argumentos de una función. Sin embargo, en cuanto a las mejores prácticas en Python, generalmente se recomienda usar objetos inmutables (como None o una cadena de texto) como argumentos predeterminados en lugar de objetos mutables (como listas o diccionarios) para evitar comportamientos inesperados. En este caso, es común utilizar argumentos predeterminados como
None
y luego verificar si son None y sustituirlos por un valor predefinido. Por ejemplo:De esta manera, aún puedes establecer los valores predeterminados para
xy
ycolors
como salida devar_combinations
yset_colors
, respectivamente, pero evitas cualquier problema potencial con argumentos predeterminados mutables.