Pourquoi Python garder un compte de référence sur False et vrai?
-
12-09-2019 - |
Question
Je regardais le code source à la hasattr fonction intégrée et remarqué quelques lignes qui a piqué mon intérêt:
Py_INCREF(Py_False);
return Py_False;
...
Py_INCREF(Py_True);
return Py_True;
ne sont pas Py_False
et Py_True
valeurs globales? Juste par curiosité pure, pourquoi Python garder un compte de référence pour ces variables?
La solution
Il est de faire tous les uniformes de manutention d'objets. Si je vous écris du code C qui gère une valeur de retour d'une fonction, je dois augmenter et diminuer le nombre de références sur cet objet. Si la fonction me retourne vrai, je ne veux pas avoir à vérifier si elle est l'un de ces objets spéciaux pour savoir si de manipuler son compte de référence. Je peux traiter tous les objets identiques.
En traitant Vrai et Faux (et None, btw) le même que tous les autres objets, le code C est beaucoup plus simple tout au long.