Maison > développement back-end > Tutoriel Python > Pourquoi `example = list(...)` renvoie-t-il parfois une `TypeError : l'objet 'list' n'est pas appelable` ?

Pourquoi `example = list(...)` renvoie-t-il parfois une `TypeError : l'objet 'list' n'est pas appelable` ?

Mary-Kate Olsen
Libérer: 2024-12-07 09:35:12
original
511 Les gens l'ont consulté

Why Does `example = list(...)` Sometimes Throw a `TypeError: 'list' object is not callable`?

Pourquoi "example = list(...)" entraîne-t-il "TypeError : l'objet 'list' n'est pas appelable" ?

Au REPL, lorsque vous avez essayé le code "example = list('easyhoss')", en espérant que la variable d'exemple contienne une liste de caractères de la chaîne, vous avez rencontré l'erreur : "TypeError : L'objet 'list' n'est pas appelable".

Cela se produit parce que vous avez écrasé par inadvertance la classe Python intégrée "list" par une instance de liste. Lorsque vous avez fait référence à "list" plus tard dans "example = list('easyhoss')", Python l'a interprété comme une instance qui ne peut pas être appelée.

Pour comprendre cela, nous devons explorer l'espace de noms et les mécanismes de portée de Python.

Espaces de noms : Python utilise des espaces de noms imbriqués pour stocker les noms d'objets (y compris les classes et les fonctions). Chaque module possède son propre espace de noms, y compris des fonctions et des classes intégrées.

Portée : Lors de la référence à un nom, Python vérifie d'abord l'espace de noms local. S'il n'est pas trouvé, il passe aux espaces de noms de niveau supérieur jusqu'à ce qu'il localise le nom ou ne rencontre plus d'espaces de noms (ce qui entraîne une erreur de nom).

Dans votre cas, vous avez sans le savoir attribué une instance de "liste" au variable globale "list" :

example = list('easyhoss')  # "list" refers to the built-in class
list = list('abc')  # Creates a "list" variable referencing an instance of "list"
example = list('easyhoss')  # "list" refers to the instance, resulting in the error
Copier après la connexion

Cet écrasement masque la classe "list" intégrée, provoquant le "TypeError."

Pour éviter cette erreur, utilisez des IDE comme PyCharm ou Atom avec des plugins Python qui mettent en évidence l'observation des noms.

Considérations supplémentaires :

  • "list" est une classe appelable qui déclenche la création d'instance.
  • Instance de "list" (list[]) ne sont pas appelables.
  • Pour plus d'informations sur les classes et les instances, reportez-vous à la documentation Python.

Lorsque vous lancez une session Python interactive, vous créez un module temporaire avec son propre espace de noms, ce qui peut également avoir un impact sur le comportement de l'espace de noms.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal