次の関数があり、オプションの引数myobj
が渡されない場合、myobj
残りますNULL
か、またはに設定されPy_None
ますか?
static PyObject * myfunc(PyObject * self, PyObject * args) {
PyObject * myobj = NULL;
if (!PyArg_ParseTuple(args, "|O", &myobj)) {
return NULL;
}
// ...
}
Parsing arguments と building valuesによると、
|
Python 引数リストの残りの引数がオプションであることを示します。オプションの引数に対応する C 変数は、デフォルト値に初期化する必要があります — オプションの引数が指定されていない場合、 PyArg_ParseTuple() は対応する C 変数の内容に触れません。
これはsに当てはまりますPyObject *
か?これは明らかにCに存在するポインタであるため、C変数であると言えますが、Pythonオブジェクトへのポインタであるため、C変数としてカウントされないと言うこともできます.