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