Pasar parámetros por referencias a funciones en Python

Las referencias son especialmente importantes para entender cómo se pasan los argumentos a las funciones. Cuando se llama a una función, los valores de los argumentos se copian en las variables de los parámetros. Para las listas, esto significa que se utiliza una copia de la referencia para el parámetro. Para ver las consecuencias de esto, abre una nueva ventana del editor de archivos, introduce el siguiente código y guárdalo como passingReference.py:

def eggs(someParameter):
    someParameter.append('Hello')

spam = [1, 2, 3]
eggs(spam)
print(spam)

Observa que cuando se llama a eggs(), no se utiliza el valor de retorno para asignar un nuevo valor a spam. En cambio, modifica la lista en su lugar, directamente. Cuando se ejecuta, este programa produce la siguiente salida:

[1, 2, 3, 'Hello']

Aunque spam y someParameter contienen referencias separadas, ambas se refieren a la misma lista. Por eso la llamada al método append('Hello') dentro de la función afecta a la lista incluso después de que la llamada a la función haya regresado.

Ten en cuenta este comportamiento: olvidar que Python maneja las variables de lista y diccionario de esta manera puede llevar a errores confusos.

Deja una respuesta