Python aplica la función a la lista
Funciones y métodos de Python
Michael Zippo
01.11.2021
A diferencia de los objetos iterables, no puede acceder a un valor desde una funciòn mediante la sintaxis de indexaciòn.
Incluso si una funciòn devuelve un iterable, debe asignar la respuesta de una funciòn a una variable antes de acceder a sus valores. De lo contrario, encontrará una " TypeError: " function " el objeto no se puede suscribir " error.
En esta guìa, hablamos sobre lo que significa este error. Analizamos dos ejemplos de este error para que pueda descubrir còmo resolverlo en su còdigo.
TypeError: " function " el objeto no es subcriptable
Se puede acceder a objetos iterables como listas y cadenas usando notaciòn de indexaciòn . Esto le permite acceder a un elemento individual, o rango de elementos, desde un iterable.
Considere el siguiente còdigo:
El valor en la posiciòn del ìndice 0 es A. Por lo tanto, nuestro còdigo devuelve " A & rdquo ;. Esta sintaxis no funciona en una funciòn. Esto se debe a que una funciòn no es un objeto iterable. Las funciones solo pueden devolver un objeto iterable si se las llama.
La " TypeError: " function " el objeto no se puede suscribir " se produce un error cuando intenta acceder a una funciòn como si fuera un objeto iterable.
Este error es com√∫n en dos escenarios:
El 81% de los participantes declarò se sintieron más seguros acerca de sus perspectivas laborales después de asistir a un campamento de entrenamiento. Asòciese a un bootcamp hoy mismo.
El graduado promedio de un bootcamp pasò menos de seis meses en la transiciòn profesional, desde comenzar un bootcamp hasta encontrar su primer trabajo.
Analicemos ambos estos escenarios.
Escenario # 1: Funciòn con el mismo nombre que un Iterable
Cree un programa que imprima informaciòn sobre un estudiante en una escuela. Comenzamos definiendo un diccionario con informaciòn sobre un estudiante y su √∫ltima puntuaciòn en la prueba:
Nuestro diccionario contiene tres claves y tres valores. Una clave representa el nombre de un estudiante; una clave representa el puntaje que obtuvo un estudiante en su √∫ltimo examen; una clave representa la clase en la que se encuentra el alumno.
A continuaciòn, vamos a definir una funciòn que imprima estos valores en la consola:
Nuestro còdigo imprime los tres valores en el diccionario " alumno " en la consola. El diccionario " alumno " se pasa como un argumento en la funciòn student ().
Llamemos a nuestra funciòn y pasemos el " student & rdquo ; diccionario como parámetro :
Nuestro còdigo Python arroja un error:
Este error se debe a porque tenemos una funciòn y un iterable con el mismo nombre. " estudiante " se declara primero como un diccionario. Luego definimos una funciòn con el mismo nombre. Esto hace que " estudiante " una funciòn en lugar de un diccionario.
Cuando pasamos " estudiante " como parámetro en la funciòn estudiante (), estamos pasando la funciòn con el nombre " estudiante & rdquo ;.
Resolvemos este problema cambiando el nombre de nuestra funciòn estudiante:
Hemos cambiado el nombre de nuestra funciòn a " show_student_details & rdquo ;. Ejecutemos nuestro còdigo y veamos qué sucede:
Nuestro còdigo imprime con éxito informaciòn sobre nuestro estudiante en la consola.
Escenario # 2: Acceso a una funciòn usando la indexaciòn
Escriba un programa que filtra una lista de registros de estudiantes y solo muestra aquellos en los que un estudiante obtuvo una calificaciòn A en su √∫ltimo examen.
Comenzaremos definiendo un matriz de estudiantes:
Nuestra lista de estudiantes contiene tres diccionarios. Cada diccionario contiene el nombre de un estudiante y la calificaciòn que obtuvo en su examen más reciente.
Luego, defina una funciòn que devuelva una lista de estudiantes que obtuvieron una calificaciòn A:
La funciòn acepta una lista de estudiantes llamada "alumnos". Nuestra funciòn itera sobre esa lista mediante un ciclo for. Si un estudiante en particular ha obtenido una calificaciòn de "A", su registro se agrega a la lista de " a_grade_students ". De lo contrario, no pasa nada.
Una vez que se ha buscado a todos los estudiantes, nuestro còdigo imprime una lista de los estudiantes que obtuvieron una calificaciòn de " A " y devuelve esa lista a el programa principal.
"Career Karma entrò en mi vida cuando más lo necesitaba y qu ickly me ayudò a emparejarme con un bootcamp. ¬°Dos meses después de graduarme, encontré el trabajo de mis sue√±os que se alineaba con mis valores y metas en la vida! "
Venus, ingeniero de software en Rockbot
Queremos recuperar al primer alumno que obtuvo una calificaciòn de "A". Para ello, llamamos a nuestra funciòn y usamos la sintaxis de indexaciòn para recuperar el registro del primer alumno:
Ejecuta nuestro còdigo:
Nuestro còdigo devuelve un error. Estamos intentando acceder a un valor de la funciòn " get_a_grade_students " sin llamar primero a la funciòn.
Para resolver este problema, debemos llamar a nuestra funciòn antes de intentar recuperar valores de él:
Primero, llamamos a nuestra funciòn get_a_grade_students ()
y especificamos nuestra lista de estudiantes como parámetro. A continuaciòn, usamos la indexaciòn para recuperar el registro en la posiciòn de ìndice 0 de la lista que devuelve la funciòn get_a_grade_students ()
. Finalmente, imprimimos ese registro en la consola.
Ejecutemos nuestro còdigo:
Nuestro còdigo primero imprime una lista de todos los estudiantes que obtuvieron una " A " calificaciòn. A continuaciòn, nuestro còdigo imprime el primer estudiante de la lista que obtuvo una " A " calificaciòn. En este caso, esa estudiante era Samantha.
El error " TypeError: " function " object is not subscriptable " aparece cuando intenta acceder a un elemento desde una funciòn como si el la funciòn era un objeto iterable, como una cadena o una lista.
Para resolver este error, primero aseg√∫rese de no anular ninguna variable que almacene valores declarando una funciòn después de declarar la variable . Luego, aseg√∫rese de llamar a una funciòn antes de intentar acceder a los valores que devuelve.