2010-03-17 3 views

Répondre

41

Vous avez sûrement utilisé l'identifiant sum précédemment dans votre code en tant que nom de variable locale, et la dernière valeur que vous avez liée à elle était int. Donc, dans cet extrait de code, vous essayez d'appeler le int. print sum juste avant de l'appeler et vous verrez, mais l'inspection du code le révélera probablement plus rapidement.

Ce genre de problème est la raison pour laquelle les experts Pythonistas continuent à dire aux débutants encore et encore "n'utilisez pas de noms intégrés pour vos propres variables!" même quand il est apparemment pas mal un extrait de code spécifique: il est une habitude horrible, et un bug qui ne demandent qu'à se produire, si vous utilisez des identifiants tels que sum, file, list, etc, comme vos propres variables ou fonctions -)

+1

Une alternative fréquemment recommandée consiste à placer un suffixe de soulignement sur les identificateurs qui entreraient en conflit avec les mots réservés et les identifiants intégrés; c'est-à-dire 'type_' ou' sum_' ou 'from_' (si vous utilisez des prépositions comme identificateurs). – cdleary

1
!

Je voudrais ajouter à ce qu'Alex Martelli a dit en disant de ne pas utiliser la somme comme nom de variable, mais si votre programme est déjà trop long ou que vous utilisez inactif et que vous ne voulez pas recommencer peut faire

sum2 = sum 
del sum 

pour transférer la valeur de la somme en SUM2 (si nécessaire) et supprimer la somme variable (ce qui vous permet de continuer à travailler avec la fonction somme)

Questions connexes