Wenn ich die folgende Funktion habe und das optionale Argument myobj
nicht übergeben wird, bleibt myobj
NULL
oder ist es auf Py_None
eingestellt?PyArg_ParseTuple Standardargument
static PyObject * myfunc(PyObject * self, PyObject * args) {
PyObject * myobj = NULL;
if (!PyArg_ParseTuple(args, "|O", &myobj)) {
return NULL;
}
// ...
}
Nach Parsing arguments and building values,
|
Zeigt an, dass die übrigen Argumente in der Python Argumentliste sind optional. Die C-Variablen, die optionalen Argumenten entsprechen, sollten auf ihren Standardwert initialisiert werden - wenn kein optionales Argument angegeben wird, berührt PyArg_ParseTuple() nicht den Inhalt der entsprechenden C-Variablen.
Gilt das für PyObject *
s? Es ist offensichtlich ein Zeiger, der in C existiert, also könnte man sagen, es ist eine C-Variable, aber es ist ein Zeiger auf ein Python-Objekt, also könnte man auch sagen, dass es nicht als C-Variable zählt.