9.3. Tuplas como valor de retorno
Las funciones pueden devolver tuplas como valor de retorno. Por ejemplo, podría escribir una función que intercambie dos parámetros:
1: def intercambio(x, y):
2: return y, x
1: a, b = intercambio(a, b)
En este caso, no hay ninguna ventaja en convertir intercambio en una función.
De hecho, existe un peligro al intentar encapsular intercambio, y es el tentador error que sigue:
1: def intercambio(x, y): # versión incorrecta
2: x, y = y, x
1: intercambio(a, b)
a y x son alias del mismo valor. Cambiar x dentro de intercambio hace que x se refiera a un valor diferente, pero no tiene efecto alguno sobre a en main .
De forma similar, cambiar y no tiene efecto sobre b.
Esta función se ejecuta sin generar un mensaje de error, pero no hace lo que intentamos. Este es un ejemplo de error semántico.
A modo de ejercicio, dibuje un diagrama de estados para esta función de manera que pueda ver por que no trabaja como usted quiere.
Comentarios
Publicar un comentario