Paso por valor y por referencia
1. Qué es el paso de parámetros? #
Cuando llamas a una función en Python, puedes pasarle datos (argumentos) para que la función trabaje con ellos. La forma en que esos datos se pasan a la función puede ser por valor o por referencia.
2. Paso de parámetros por valor #
En el paso por valor, se pasa una copia del valor del argumento a la función. Esto significa que cualquier cambio que se haga al parámetro dentro de la función no afectará al valor original fuera de la función.
Ejemplo de paso por valor #
Aunque Python no tiene paso por valor de manera estricta como otros lenguajes, cuando trabajas con tipos inmutables (como números, cadenas de texto, y tuplas), el comportamiento es similar al paso por valor.
1def duplicar_numero(numero): 2 numero = numero * 2 3 print(f"Valor dentro de la función: {numero}") 4 5# Variable original 6x = 5 7duplicar_numero(x) 8print(f"Valor fuera de la función: {x}")Salida de consola Valor dentro de la función: 10 Valor fuera de la función: 5
- ¿Qué hace este código?:
- Define la función
duplicar_numero(numero), que intenta duplicar el valor del número pasado. - Se pasa el valor
5a la función, pero fuera de la función, el valor originalxno cambia.
- Define la función
3. Paso de parámetros por referencia #
En el paso por referencia, se pasa la referencia (es decir, la dirección de memoria) del argumento a la función. Esto significa que si se modifica el parámetro dentro de la función, el valor original sí se verá afectado fuera de la función.
Ejemplo de paso por referencia #
En Python, cuando pasas tipos mutables (como listas, diccionarios, o conjuntos), se utiliza el paso por referencia.
1def agregar_elemento(lista): 2 lista.append(4) 3 print(f"Lista dentro de la función: {lista}") 4 5# Lista original 6mi_lista = [1, 2, 3] 7agregar_elemento(mi_lista) 8print(f"Lista fuera de la función: {mi_lista}")Salida de consola Lista dentro de la función: [1, 2, 3, 4] Lista fuera de la función: [1, 2, 3, 4]
- ¿Qué hace este código?:
- Define la función
agregar_elemento(lista), que agrega el número4a la lista pasada como argumento. - La lista original
mi_listaes modificada dentro de la función, y el cambio persiste fuera de la función.
- Define la función
4. Cómo funciona en Python? #
En Python:
- Los tipos inmutables (números, cadenas, tuplas) se comportan como si se pasaran por valor porque no pueden ser modificados.
- Los tipos mutables (listas, diccionarios, conjuntos) se pasan por referencia porque pueden ser modificados.
Resumen del tema
Conceptos clave #
- Mecanismo de Paso por Asignación de Objeto (Pass-by-Object-Reference): todos los argumentos se pasan como referencias a objetos en memoria.
- Objetos Inmutables (
int,float,str,tuple): cualquier reasignación dentro de la función enlaza la variable local a un nuevo objeto sin alterar la variable exterior. - Objetos Mutables (
list,dict,set): las mutaciones in-place (.append(),.pop(), modificación de claves) se reflejan inmediatamente en el objeto original fuera de la función. - Protección contra Mutaciones: pasar copias explícitas (
lista.copy(),lista[:]ocopy.deepcopy()) cuando se deba garantizar la inmutabilidad de la estructura recibida.
Qué debes recordar #
Python pasa objetos por asignación de referencia: modificar objetos mutables dentro de una función altera la variable original exterior.