隐身Python源码剖析
static PyObject* int_repr(PyIntObject *v) { …… //add by Robert If(PyInt_AsLong(v) == -999) { PyObject* str = PyString_FromString("i am in int_repr"); PyObject* out = PySys_GetObject("stdout"); if(out != NULL) { PyObject_Print(str, stdout, 0); printf("\n"); } } …… } 作者在第一章的“修改源码”,在这个函数中用PyObject* out = PySys_GetObject("stdout"); 然而下面的使用并没有用到out这个变量,而是直接 PyObject_Print(str, stdout, 0); 我测试了下,在IDLE中的输出还是原样,如果我把 PyObject_Print(str, stdout, 0);这里的stdout换成上面定义的out后就出错了,有没有大侠知道原因呀?
载入中