Функция печати в python3.x?
Я хочу знать, как работает функция печати. Но я не могу найти функцию печати в исходном коде python3.2!
В python2.5 выведите целое число (например, print 100), вызовет int_print(). Потому что при создании объекта int инициализируйте указатель функции PyIntObject - tp_print, который указывает на int_print():
printfunc tp_print;
/* We can't provide a full compile-time check that limited-API
users won't implement tp_print. However, not defining printfunc
and making tp_print of a different function pointer type
should at least cause a warning in most cases. */
typedef int (*printfunc)(PyObject *, FILE *, int);
В python3.x все целые числа являются объектами PyLongObject, но они инициализируют tp_print=NULL. И print - это функция, не похожая на python2.x Скажите, пожалуйста, когда звоните в печать, как это работает! Большое спасибо!
1 ответ
Я уже знал! При печати встроенного объекта print() вызовет функцию builtin_print().
builtin_print(PyObject *self, PyObject *args, PyObject *kwds)