Dijimos antes que las modificaciones a las variables incluidas como parámetros que hagamos en una función, no modifican las variables asociadas en el programa principal.
Esto es porque en Python, los parámetros de una función son enviados por valor. Esto significa que cuando le paso una variable a una función, el python lee el valor de dicha variable y se lo pasa a la función. La función crea una nueva variable y le asigna el valor que recibió del programa principal. Por lo tanto, cualquier modificación que hagamos en la función, modificará a esta nueva variable y no a la original del programa.
Para las variables de tipo lista, que veremos más adelante, esto no es así, las listas se envían por referencia.
Veamos un ejemplo. Con el siguiente programa intento hacer una función que reciba dos variables e intercambie sus valores:
Este programa falla (podemos ver en el resultado que los valores de a y b no se intercambiaron) porque los cambios que hago a las variables a y b en la función (en las líneas 3 y 4) no se hicieron sobre las variables originales, sino sobre las copias en la función. Al salir de la función, dichos cambios se perdieron, manteniendo las variables su valor inicial.Si uno quiere que las variables que modifica en la función se modifiquen también en el programa, lo que debe hacer es devolver las variables en el return, y asignar su valor a las variables correspondientes en el programa principal, como se muestra en el siguiente ejemplo:
No hay comentarios:
Publicar un comentario