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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top