Saltar al contenido principal

Paso por valor y paso por referencia

En Python, cuando hablamos de paso por valor (pass by value) o paso por referencia (pass by reference) en funciones, nos referimos a cómo se transmiten los argumentos a la función.

El paso por valor significa que se le pasa una copia del valor a la función. Esto quiere decir que los cambios hechos al parámetro dentro de la función no afectan a la variable original fuera de la función.

En Python, los tipos inmutables (como números, cadenas de texto, tuplas, etc.) se comportan como si fuesen pasados por valor. Si haces una modificación dentro de la función, estás creando un nuevo valor sin cambiar el original.

def incrementar(n):
n += 1
print("Dentro de la función:", n)

numero = 5
incrementar(numero)
print("Fuera de la función:", numero)

Salida:

Dentro de la función: 6
Fuera de la función: 5

Como int es inmutable, la variable numero no se ve afectada por la modificación dentro de la función.

En cambio, el paso por referencia significa que se le pasa a la función una referencia a la variable original. Esto quiere decir que los cambios realizados al argumento dentro de la función afectan a la variable fuera de la función.

En Python, los tipos mutables (como listas, diccionarios, conjuntos, etc.) son pasados de forma que la función puede modificar el contenido original.

Ejemplo:

def añadir_elemento(lista):
lista.append(4)
print("Dentro de la función:", lista)

numeros = [1, 2, 3]
añadir_elemento(numeros)
print("Fuera de la función:", numeros)

Salida:

Dentro de la función: [1, 2, 3, 4]
Fuera de la función: [1, 2, 3, 4]

Como las listas son mutables, cualquier modificación que haces dentro de la función también se refleja fuera.