1
次の関数があり、オプションの引数myobj
が渡されない場合、myobj
はNULL
のままですか、それとも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変数として数えられないとも言えます。