Sobes.tech
Senior

¿Qué mostrará cada print en una función con un argumento mutable por defecto?

sobes.tech AI

Respuesta de la IA

En lenguajes donde las funciones pueden tener argumentos predeterminados mutables (cambiables), como en Python, los valores predeterminados se inicializan una sola vez al definir la función, no en cada llamada. Esto lleva a que si el argumento predeterminado es un objeto mutable (por ejemplo, una lista o un diccionario), los cambios en ese objeto se mantienen entre llamadas.

Ejemplo en Python:


def func(a, lst=[]):
    lst.append(a)
    print(lst)

func(1)  # Imprime: [1]
func(2)  # Imprime: [1, 2]
func(3, ['x'])  # Imprime: ['x', 3]
func(4)  # Imprime: [1, 2, 4]

Explicación:

  • En la primera llamada func(1) se usa la lista predeterminada [], a la que se añade 1.
  • En la segunda llamada func(2) se usa la misma lista, ahora [1], y se añade 2.
  • En la llamada func(3, ['x']) se pasa una nueva lista ['x'], por lo que los cambios no afectan a la predeterminada.
  • En la última llamada func(4) se usa nuevamente la lista predeterminada, que ahora contiene [1, 2], y se añade 4.

De esta forma, cada print mostrará el estado actual del argumento mutable predeterminado, que mantiene los cambios entre llamadas.