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
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 :
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!