2009-09-22 4 views
21

なぜPythonは参照カウントをFalseとTrueで保持しますか?私ははhasattr組み込み関数のソースコードを見て、私の興味をそそった行のカップルに気づいた

Py_INCREF(Py_False); 
return Py_False; 

... 

Py_INCREF(Py_True); 
return Py_True; 

Py_FalsePy_Trueグローバル値ではありませんか?ただの好奇心から、なぜPythonはこれらの変数の参照カウントを保持していますか?

+0

-1:これは現在どのプログラミング問題を解決していますか? –

+9

@ S.Lottここで質問するのは、特定の具体的なプログラミングの問題に関連しなければならないからです。 – Triptych

+17

私は現在、Py_TrueとPy_Falseの参照カウントを増やす必要性を理解していないという問題があります。 –

答えて

21

すべてのオブジェクト処理を統一することです。関数の戻り値を扱うCコードを記述している場合、そのオブジェクトの参照カウントを増減する必要があります。関数が私の真を返す場合、参照カウントを操作するかどうかを知るために、それらが特別なオブジェクトの1つであるかどうかをチェックする必要はありません。私はすべてのオブジェクトを同じように扱うことができます。

TrueとFalse(およびNone、btw)を他のすべてのオブジェクトと同じように扱うことで、Cコードはずっと簡単になります。

+0

さらに、T FとNoneは実際にはオブジェクトです。彼らには方法がありません。 http://docs.python.org/c-api/bool.html – Pod

+1

には、技術的にメソッドがあります。すべてのオブジェクトにはメソッドがあります。 – ironfroggy

+4

len(dir(True))はメソッドの54個の完全な*です。彼らはちょうどすべての特別な(二重アンダースコアの)ものです。 –

関連する問題