2

指定された PyObject の真の値を返す関数を作成しようとしています。この関数は、if() の真偽テストと同じ値を返す必要があります。空のリストと文字列は False などです。python/include ヘッダーを調べましたが、これを行っているように見えるものは見つかりませんでした。最も近いのは PyObject_RichCompare() で、2 番目の値は True でしたが、たとえば "1" == True に対して False を返します。これを行う便利な関数はありますか、それとも一連の型に対してテストし、可能な型ごとに特殊なケースのテストを行う必要がありますか? if() の内部実装は何をしますか?

4

2 に答える 2

5

これじゃないですか、object.h:

PyAPI_FUNC(int) PyObject_IsTrue(PyObject *);

?

于 2009-04-24T22:00:07.550 に答える
1

使用する

int PyObject_IsTrue(PyObject *o)
オブジェクト o が true であると見なされる場合は 1 を返し、そうでない場合は 0 を返します。これは、Python の式 not not o と同等です。失敗すると -1 を返します。

( Python/C API リファレンス マニュアルより)

于 2009-04-24T22:12:23.557 に答える