Una lista se puede enviar a una función como argumento, ya que cualquier entidad reconocible por Python puede desempeñar el papel de un argumento de función, aunque hay que asegurarse de que la función sea capaz de manejar esta entidad.
En este caso, si se pasa una lista a una función, la función tiene que tratarla como una lista.
Vamos a plantear una función de ejemplo que funcione con lista como argumento. Se define la función llamada list_sum que toma un argumento, lst que se espera sea una lista de números.
La función list_sum(lst) tiene como objetivo sumar todos los elementos de una lista y devolver la suma total.
Inicialización de la variable s: Se inicializa una variable s con el valor 0. Esta variable se usará para acumular la suma de los elementos de la lista.
Iteración a través de la lista:
- for elem in lst:: Este es un bucle for que itera sobre cada elemento de la lista lst. En cada iteración, el elemento actual se asigna a la variable elem.
- s += elem: Esta línea es una abreviatura de s = s + elem. Suma el valor del elemento actual (elem) a la variable s.
Devolución del resultado: Después de que el bucle ha terminado de iterar sobre todos los elementos de la lista, la función devuelve el valor acumulado de s, que es la suma de todos los elementos de la lista.
La función completa planteada será:
Si se invoca la función list_sum con la lista [3, 2, 1], la función sumará los elementos de la lista de la siguiente manera:
Inicialización:
Iteración a través de la lista [3, 2, 1]:
Primera iteración: elem = 3
Segunda iteración: elem = 2
Tercera iteración: elem = 1
Devolución del resultado:
Pero si se invoca la función de la siguiente manera el resultado será error:
Si se invoca la función list_sum con print(list_sum(3)), ocurrirá un error porque la función list_sum está diseñada para recibir una lista, no un entero. Vamos a detallar qué pasa exactamente.
Ejemplo de uso incorrecto
Explicación del error:
Cuando se llama a list_sum(3), el argumento 3 se pasa a la función list_sum. Dentro de la función, se intenta iterar sobre 3 con un bucle for, lo cual no es posible porque 3 es un entero y no una lista.
El error específico que ocurrirá es:
¿Por qué ocurre este error?
El bucle for elem in lst: intenta iterar sobre lst, esperando que lst sea una lista (o algún otro tipo iterable). Un entero no es un iterable en Python, por lo que el intérprete lanza un TypeError.
Ejemplo del código con el error:
Cómo evitar el error:
Para evitar este error, hay que asegurar de pasar una lista como argumento a la función. Por ejemplo:
Resultado de la invocación correcta:
En este caso, la función sumará los elementos de la lista [3], devolviendo 3 como resultado.
Contenido Web de Yolanda Muriel está sujeto bajo Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.