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ñade1. - En la segunda llamada
func(2)se usa la misma lista, ahora[1], y se añade2. - 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ñade4.
De esta forma, cada print mostrará el estado actual del argumento mutable predeterminado, que mantiene los cambios entre llamadas.