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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top