Pasar por referencia vs valor en Python

Los desarrolladores que saltan a la programación de Python desde otros lenguajes como C++ y Java a menudo se confunden con el proceso de pasar argumentos en Python. El modelo de datos centrado en objetos y su tratamiento de asignación es la causa detrás de la confusión en el nivel fundamental. 

En el artículo, discutiremos el concepto de cómo pasar un valor por referencia en Python e intentaremos comprender los ejemplos de paso por referencia en Python .

Pasar por valor y pasar por referencia en Python

Es posible que desee golpear algo después de leer a continuación, así que prepárese. El modelo de paso de argumentos de Python no es «Pasar por valor» ni «Pasar por referencia», sino «Pasar por referencia de objeto». 

Los paradigmas de «Pasar por valor», «Pasar por referencia» y «Pasar por referencia de objeto» se pueden entender explorando las siguientes funciones de ejemplo. Mire las dos funciones definidas a continuación:

Python3

def set_list(list):
    list = ["A", "B", "C"]
    return list
 
def add(list):
    list.append("D")
    return list
 
my_list = ["E"]
 
print(set_list(my_list))
 
print(add(my_list))

Producción:

['A', 'B', 'C']
['E', 'D']

Ahora, exploremos el código anterior, 

La variable no es el objeto.

Aquí “a” es una variable que apunta a una lista que contiene el elemento “X” e “Y”. Pero «a» en sí mismo no es la lista. Considere «a» como un cubo que contiene el objeto «X» e «Y». 

 a = ["X", "Y"]

 

¿Qué es Pasar por referencia en Python?

Pasar por referencia significa que debe pasar la función (referencia) a una variable que indica que la variable ya existe en la memoria. 

Aquí, la variable (el cubo) se pasa directamente a la función. La variable actúa como un Paquete que viene con su contenido (los objetos).

 

En la imagen del código anterior, tanto «lista» como «mi_lista» son la misma variable de contenedor y, por lo tanto, se refieren exactamente al mismo objeto en la memoria. Cualquier operación realizada por la función en la variable o el objeto será reflejada directamente por la persona que llama a la función. Por ejemplo, la función podría cambiar completamente el contenido de la variable y señalarla a un objeto completamente diferente: 

 

Además, la función puede reasignar el contenido de la variable con el mismo efecto que se muestra a continuación: 

 

Para resumir, en pass-by-reference la función y la persona que llama usan la misma variable y objeto.

¿Qué es pasar por valor en Python?

En este enfoque, pasamos una copia de las variables reales en función como parámetro. Por lo tanto, cualquier modificación de los parámetros dentro de la función no se reflejará en la variable real.

 

Lo mismo es cierto para cualquier operación realizada por la función sobre la variable o el objeto. 

 

Para resumir, las copias de las variables y los objetos en el contexto del llamador de la función están completamente aislados.

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *