Maison >développement back-end >Tutoriel Python >Pourquoi la redéfinition de la fonction « str » provoque-t-elle une TypeError en Python ?

Pourquoi la redéfinition de la fonction « str » provoque-t-elle une TypeError en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 00:09:18759parcourir

Why Does Redefining the `str` Function Cause a TypeError in Python?

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

Déclaration:
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