6 - Listas y funciones

Lección 6 del curso Python Nivel Intermedio.

Introducción

En la lección anterior vimos cómo operar sobre una porción de una lista o una tupla, usando el slicing y en el curso anterior hablamos de las reglas de alcance de una variable, que determinaban cuándo una función podía o no modificar el valor de dicha variable.

En esta lección veremos que cuando se usa una lista como argumento de entrada a una función, el comportamiento es diferente, pues recordemos que las listas son tipos de datos mutables.

Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Repaso: las reglas de alcance

Cuando hablamos de las reglas de alcance mencionamos que se pueden tener dos tipos de variables: las globales (definidas antes y por fuera de una función) y las locales (definidas dentro de la función). Y en ese caso vimos que en principio una función puede acceder a una variable global pero no puede modificarla.

Veamos por ejemplo estas líneas de código:

def modificar_entero(entero):
    entero = entero + 10
    print(f'Valor del entero dentro de la función: {entero}')

x = 5
print(f'Valor del entero antes de ejecutar la función: {x}')
modificar_entero(x)
print(f'Valor del entero después de la función: {x}')

Al ejecutarlas obtendremos este resultado:

Valor del entero antes de ejecutar la función: 5
Valor del entero dentro de la función: 15
Valor del entero después de la función: 5

Vemos que en efecto, una vez ejecutada la función el valor del entero sigue siendo el mismo (5).

Pasando una lista como argumento de una función

Sin embargo, el comportamiento anterior se debe a que el tipo de dato que pasamos a la función (x, un entero) es inmutable.

Pero si intentamos hacer algo similar con una lista, que como vimos en la introducción a las listas y a las tuplas es un tipo de dato mutable (es decir que se puede modificar), el comportamiento será diferente.

Así, si por ejemplo creamos la función modificar_lista y esta toma cada elemento de la lista y le suma 10 unidades, veremos que una vez ejecutada la función obtendremos una lista modificada: cada uno de sus elementos tendrá 10 unidades más que en la lista anterior.

Así que al pasar una lista como argumento, y modificarla dentro de la función, podremos ver los cambios reflejados en la misma lista una vez salgamos de dicha función.

Pasando una tupla como argumento de una función

Sin embargo, si pasamos una tupla como argumento de la misma función modificar_lista , de inmediato Python nos arrojará un error indicándonos que estas modificaciones no están permitidas para este tipo de dato. Es decir que esencialmente Python nos está recordando que las tuplas son inmutables.

Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Conclusión

Ya tenemos claro entonces cómo funcionan las reglas de alcance cuando combinamos funciones con listas y con tuplas.

En la próxima lección veremos más en detalle la versatilidad de estos tipos de datos, así que hablaremos particularmente de métodos y funciones útiles para el procesamiento de estas secuencias.

Ver todas las lecciones de este curso