Écrasement des fonctions intégrées
Pourquoi l'extrait de code ci-dessous entraîne-t-il une TypeError la deuxième fois qu'il est exécuté ?
def example(parameter): global str str = str(parameter) print(str) example(1) example(2)
Lors de la première exécution, le programme s'exécute sans problème. Cependant, lors de son deuxième appel, une erreur est générée :
TypeError: 'str' object is not callable
Analyse
Cette erreur se produit car le code redéfinit la fonction str intégrée dans la fonction exemple. En utilisant le mot-clé global et en attribuant une nouvelle valeur à str, le code écrase l'implémentation originale du type chaîne.
Résolution
Pour résoudre ce problème, évitez de redéfinir fonctions intégrées comme str. Utilisez plutôt un nom différent pour la variable locale et supprimez l'instruction globale :
def example(parameter): local_string = str(parameter) print(local_string)
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!