次の関数があり、オプションの引数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変数としてカウントされないと言うこともできます.