2012-04-11 11 views
1

次の関数があり、オプションの引数myobjが渡されない場合、myobjNULLのままですか、それともPy_Noneに設定されていますか?PyArg_ParseTuple既定の引数

static PyObject * myfunc(PyObject * self, PyObject * args) { 
    PyObject * myobj = NULL; 
    if (!PyArg_ParseTuple(args, "|O", &myobj)) { 
     return NULL; 
    } 
    // ... 
} 

Parsing arguments and building valuesよると、

|はPythonの引数リストの残りの引数はオプションであることを示します。オプションの引数に対応するC変数はデフォルト値に初期化する必要があります。オプションの引数を指定しない場合、PyArg_ParseTuple()は対応するC変数の内容には触れません。

これはPyObject *に適用されますか?明らかに、C言語に存在するポインタなので、C変数だと言えるでしょうが、Pythonオブジェクトへのポインタなので、C変数として数えられないとも言えます。

答えて

3

これはNULLのままです。もちろん、構造体へのポインタはCオブジェクトです。

関連する問題