2012-04-11 94 views
1

如果我有以下功能並且可選參數myobj未通過,那麼myobj仍然是NULL還是設置爲Py_NonePyArg_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 * s?這顯然是一個存在於C中的指針,所以可以說它是一個C變量,但它是一個指向python對象的指針,所以也可以說它不會被視爲C變量。

回答

3

它將保持爲NULL。當然,指向結構體的指針是C對象。