Python appliquer la fonction à la liste

Contrairement aux objets itérables, vous ne pouvez pas accéder à une valeur à partir d’une fonction à l’aide de la syntaxe d’indexation.

Même si une fonction renvoie un itérable, vous devez affecter la réponse d’une fonction à une variable avant d’accéder à ses valeurs. Sinon, vous rencontrez une "TypeError: ‚Äòfunction‚Äô l’objet n’est pas inscriptible " error.

Dans ce guide, nous expliquons ce que signifie cette erreur. Nous passons en revue deux exemples de cette erreur afin que vous puissiez trouver comment la résoudre dans votre code.

TypeError : ‚Äòfunction‚Äô l’objet n’est pas inscriptible

Les objets itérables tels que les listes et les chaaînes sont accessibles à l’aide de la notation d’indexation. Cela vous permet d’accéder à un élément individuel, ou à une plage d’éléments, à partir d’un itérable.

Considérez le code suivant :

La valeur à la position d’index 0 est A. Ainsi, notre code renvoie "A". Cette syntaxe ne fonctionne pas sur une fonction. C’est parce qu’une fonction n’est pas un objet itérable. Les fonctions ne sont capables de renvoyer un objet itérable que si elles sont appelées.

La "TypeError : ‚Äòfunction‚Äô l’objet n’est pas inscriptible " une erreur se produit lorsque vous essayez d’accéder à une fonction comme s’il s’agissait d’un objet itérable.

Cette erreur est courante dans deux scénarios :

81 % des participants ont déclaré ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Analysons les deux ces scénarios.

Scénario 1 : fonction avec le même nom qu’un itérable

Créez un programme qui imprime des informations sur un élève dans une école. Nous commençons par définir un dictionnaire avec des informations sur un étudiant et sa dernière note au test :

Notre dictionnaire contient trois clés et trois valeurs. Une clé représente le nom d’un étudiant ; une clé représente le score obtenu par un étudiant lors de son dernier test ; une clé représente la classe dans laquelle se trouve un élève.

Ensuite, nous allons définir une fonction qui imprime ces valeurs sur la console :

Notre code imprime les trois valeurs du dictionnaire "élève‚" vers la console. Le dictionnaire "élève" est passé en tant qu’argument dans la fonction student().

Appelons notre fonction et transmettons le "student&rdquo ; dictionnaire en tant que paramètre :

Notre code Python renvoie une erreur :

Cette erreur est causée par car nous avons une fonction et un itérable du même nom. "étudiant" est d’abord déclaré comme un dictionnaire. Nous définissons ensuite une fonction du même nom. Cela rend "étudiant" une fonction plutôt qu’un dictionnaire.

Quand on passe "étudiant‚" comme paramètre dans la fonction student(), nous passons la fonction avec le nom "student‚".

Nous résolvons ce problème en renommant notre fonction student :

Nous avons renommé notre fonction en "show_student_details‚". Exécutons notre code et voyons ce qui se passe :

Notre code imprime avec succès des informations sur notre élève sur la console.

Scénario n¬∞2 : accéder à une fonction à l’aide de l’indexation

√âcrivez un programme qui filtre une liste d’enregistrements d’élèves et n’affiche que ceux pour lesquels un élève a obtenu une note A lors de son dernier test.

Nous allons commencer par définir un tableau d’étudiants :

Notre liste d’étudiants contient trois dictionnaires. Chaque dictionnaire contient le nom d’un élève et la note qu’il a obtenue lors de son test le plus récent.

Ensuite, définissez une fonction qui renvoie une liste d’étudiants ayant obtenu une note A :

La fonction accepte une liste d’étudiants appelée "élèves". Notre fonction parcourt cette liste à l’aide d’une boucle for. Si un étudiant particulier a obtenu une note "A", son dossier est ajouté à la liste "a_grade_students". Sinon, rien ne se passe.

Une fois que tous les étudiants ont été recherchés, notre code imprime une liste des étudiants qui ont obtenu une note "A" et renvoie cette liste à le programme principal.

"Career Karma est entré dans ma vie quand j’en avais le plus besoin et qu ickly m’a aidé à correspondre avec un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs dans la vie !"

Venus, ingénieur logiciel chez Rockbot

Nous voulons récupérer le premier élève qui a obtenu une note "A". Pour ce faire, nous appelons notre fonction et utilisons la syntaxe d’indexation pour récupérer l’enregistrement du premier élève :

Exécutez notre code :

Notre code renvoie une erreur. Nous essayons d’accéder à une valeur de la fonction "get_a_grade_students‚" sans appeler la fonction au préalable.
< /p>

Pour résoudre ce problème, nous devons appeler notre fonction avant d’essayer de récupérer des valeurs à partir de là :

Tout d’abord, nous appelons notre fonction get_a_grade_students() et spécifions notre liste d’étudiants en paramètre. Ensuite, nous utilisons l’indexation pour récupérer l’enregistrement à la position d’index 0 de la liste que la fonction get_a_grade_students() renvoie. Enfin, nous imprimons cet enregistrement sur la console.

Exécutons notre code :

Notre code imprime d’abord une liste de tous les élèves qui ont obtenu un "A‚" classe. Ensuite, notre code imprime le premier étudiant de la liste qui a obtenu un "A" classe. Cet étudiant était Samantha dans ce cas.

Conclusion

L’erreur "TypeError: ‚Äòfunction‚Äô object is not subscriptable" est levée lorsque vous essayez d’accéder à un élément à partir d’une fonction comme si le fonction étaient un objet itérable, comme une chaaîne ou une liste.

Pour résoudre cette erreur, assurez-vous d’abord que vous ne remplacez aucune variable qui stocke des valeurs en déclarant une fonction après avoir déclaré la variable . Ensuite, assurez-vous d’appeler une fonction avant d’essayer d’accéder aux valeurs qu’elle renvoie.

Vous êtes maintenant prêt à résoudre cette erreur Python courante comme une codeur professionnel !