Warum hält Python einen Referenzzähler auf Falsch und Richtig?
-
12-09-2019 - |
Frage
Ich war auf der Suche auf den Quellcode der hasattr eingebaute Funktion und bemerkte ein paar Zeilen, die mein Interesse geweckt:
Py_INCREF(Py_False);
return Py_False;
...
Py_INCREF(Py_True);
return Py_True;
Sind Py_False
und Py_True
nicht globale Werte? Nur aus reiner Neugier, warum hält Python einen Referenzzähler für diese Variablen?
Lösung
Es ist alles Gegenstand der Handhabung einheitlich zu machen. Wenn ich C-Code ich schreibe, die einen Rückgabewert einer Funktion übernimmt, muss ich auf diesem Objekt den Referenzzähler erhöhen bzw. zu verringern. Wenn die Funktion mich True zurück, ich will nicht zu haben, um zu überprüfen, um zu sehen, ob es eine dieser speziellen Objekte zu wissen, ob der Referenzzähler zu manipulieren. Ich kann alle Objekte gleich behandeln.
Wahr und Falsch Durch die Behandlung (und ohne, btw) die gleichen wie alle anderen Objekte, der C-Code ist viel in ganz einfacher.