第四篇笔记

表示复数的Python对象
PyComplexObject
这个C类型 PyObject 的子类型代表一个 Python 复数对象。

PyTypeObject PyComplex_Type
这是个属于 PyTypeObject 的代表Python复数类型的实例。在Python层面的类型 complex 是同一个对象。

int PyComplex_Check(PyObject *p)
如果它的变量是一个C类型 PyComplexObject 或者是C类型 PyComplexObject 的子类型,返回真。

int PyComplex_CheckExact(PyObject *p)
如果它的参数是一个C类型 PyComplexObject 但不是C类型 PyComplexObject 的子类型,返回真。

PyObject* PyComplex_FromCComplex(Py_complex v)
Return value: New reference.
根据C类型 Py_complex 的值生成一个新的Python复数对象。

PyObject* PyComplex_FromDoubles(double real, double imag)
Return value: New reference.
根据 real 和 imag 返回一个新的C类型 PyComplexObject 对象。

double PyComplex_RealAsDouble(PyObject *op)
以C类型 double 返回 op 的实部。

double PyComplex_ImagAsDouble(PyObject *op)
以C类型 double 返回 op 的虚部。

Py_complex PyComplex_AsCComplex(PyObject *op)
返回复数 op 的C类型 Py_complex 值。

如果 op 不是一个Python复数对象,但是有一个 complex() 方法,这个方法会首先被调用,将 op 转换成为一个Python复数对象。失败时,此方法返回 -1.0 作为实数值。

上一篇:深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!


下一篇:python3 源码阅读-虚拟机运行原理