2012-04-11 3 views
1

다음 함수가 있고 선택적 인수 myobj이 전달되지 않으면 myobjNULL으로 유지됩니까? 아니면 Py_None으로 설정합니까? 에 따르면 Parsing arguments and building valuesPyArg_ParseTuple 기본 인수

static PyObject * myfunc(PyObject * self, PyObject * args) { 
    PyObject * myobj = NULL; 
    if (!PyArg_ParseTuple(args, "|O", &myobj)) { 
     return NULL; 
    } 
    // ... 
} 

,

| 파이썬 인수 목록에있는 나머지 인수는 선택을 나타냅니다. 선택적 인수에 해당하는 C 변수는 기본값으로 초기화해야합니다. 선택적 인수가 지정되지 않으면 PyArg_ParseTuple()이 해당 C 변수의 내용을 변경하지 않습니다.

이 내용은 PyObject *에 적용됩니까? 분명히 C에있는 포인터이기 때문에 C 변수라고 말할 수 있습니다.하지만 파이썬 객체에 대한 포인터이기 때문에 C 변수로 간주되지 않을 수도 있습니다.

답변

3

NULL로 남습니다. 물론 구조체에 대한 포인터는 C 객체입니다.