DEV Community

Cristian Fernando
Cristian Fernando

Posted on • Edited on

Ibuprofeno.py💊| #31: Explica este código Python

Explica este código Python

Dificultad: Intermedio

## Reto #31
x = [10, 20]
def fn(entrada):
    entrada.append(30)
    return entrada

fn(x)
print(x) # 🤔
Enter fullscreen mode Exit fullscreen mode
  • A. [10, 20, 30]
  • B. [10, 20]
  • C. [30]
  • D. None

Respuesta en el primer comentario.

Top comments (2)

Collapse
 
duxtech profile image
Cristian Fernando

Respuesta:

  • A. [10, 20, 30]

En Python tanto las listas como los diccionarios son pasados a las funciones por referencia, esto significa que no se crea un copia del valor sino que se almacena en una solo dirección de memoria.

En este caso al llamar a la función con la lista [10, 20] como argumento, esta misma la manipula transformandola en [10, 20, 30], este cambio se ve reflejado también en la variable x que esta fuera de la función justamente por que su referencia en memoria es la misma.

Podemos ver esto de una manera mas concreta haciendo uso de la función id de Python que nos regresa justamente la dirección en memoria en la que esta almacenada una variable:

x = [10, 20]
print(id(x)) # 139736027509248
def fn(entrada):
    entrada.append(30)
    print(id(entrada)) # 139736027509248
    return entrada

fn(x)
print(x) # 🤔
Enter fullscreen mode Exit fullscreen mode

Si ejecutas este código obtendrás direcciones de memoria diferentes a la mía, acá el chiste esta en que ambas sean iguales.

Collapse
 
kishan0707 profile image
Kishan Ahir

A