La redéfinition des éléments intégrés conduit à TypeError dans la conversion de chaîne
Cela explique pourquoi l'affectation de code à str dans une fonction déclenche une TypeError lors des appels suivants à cette fonction, contrairement aux tentatives initiales. L'extrait de code suivant illustre le problème :
def example(parameter): global str # Declares str as a global variable str = str(parameter) # Redefines str as a string print(str) example(1) # First call: successful string conversion example(2) # Second call: raises a TypeError
Cause première et résolution
L'instruction globale dans l'extrait redéfinit essentiellement str, qui est un type intégré représentant des chaînes. L'attribution d'une nouvelle valeur à str() remplace sa fonctionnalité par défaut en tant que fonction de conversion d'objets en chaînes.
Pour résoudre ce problème, utilisez un nom différent pour la variable locale dans la fonction et supprimez l'instruction globale. Par exemple :
def example(parameter): local_str = str(parameter) # Local variable with a different name print(local_str) example(1) # First call: successful string conversion example(2) # Second call: successful string conversion
Implications du shell Python interactif
Si vous rencontrez ce problème dans un shell interactif, l'affectation au str() global persiste à moins qu'elle ne soit explicitement résolue. Une méthode pour résoudre ce problème consiste à redémarrer l’interpréteur. Alternativement, vous pouvez supprimer manuellement l'affectation en utilisant :
del str
N'oubliez pas que str n'est pas une variable globale définie par défaut ; il se trouve généralement dans le module builtins qui est importé au démarrage de Python.
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!