复数对象

从C API中查看时,Python的复数对象被实现为两种不同的类型:一种是暴露给Python程序的Python对象,另一种是表示实际复数值的C结构.API提供了使用它们的函数。

复数作为C结构

请注意,接受这些结构作为参数和返回的函数作为结果by value而不是通过指针取消引用它们。整个API都是一致的.

Py_complex
C结构,对应于Python complexnumber对象的值部分。处理复数对象的大多数函数都适当地使用此类型的结构作为输入或输出值。它被定义为:

typedef struct {
   double real;
   double imag;
} Py_complex;
Py_complex _Py_c_sumPy_complex  left,Py_complex  right
使用C Py_complex表示。
Py_complex _Py_c_diffPy_complex  left,Py_complex  right
使用C Py_complex表示来回复两个复数之间的差异
Py_complex _Py_c_neg Py_complex  complex
返回复数的否定complex,使用C Py_complex表示
Py_complex _Py_c_prod Py_complex  left,Py_complex  right
使用C Py_complex表示
//Py_complex _Py_c_quotPy_complex  dividend,Py_complex  divisor
使用C Py_complex表示。

如果divisor为null,此方法返回零并设置errnoEDOM.

Py_complex _Py_c_powPy_complex  num,Py_complex  exp
返回numexp,使用C Py_complex表示。

如果num是null和exp不是正实数,此方法返回零并将errno设置为EDOM.

复数作为Python对象

PyComplexObject
PyObject的子类型代表Python复合体数字对象.
PyTypeObject PyComplex_Type
PyTypeObject的这个实例表示Python复数numbertype。它与Python层中的complex是同一个对象.
int PyComplex_Check PyObject  *p
如果它的参数是PyComplexObject或的子类型PyComplexObject.
int PyComplex_CheckExactPyObject  *p
如果它的参数是PyComplexObject,但不是PyComplexObject.
PyObject * PyComplex_FromCComplexPy_complex  v
Return value: New reference.

从C Py_complex值。

PyObject * PyComplex_FromDoubles real,双 imag
Return value: New reference.

返回一个新的PyComplexObject对象来自realimag.

PyComplex_RealAsDoublePyObject  *op
返回op的真实部分作为C double.
PyComplex_ImagAsDouble PyObject  *op
返回op的虚部作为C double.
Py_complex PyComplex_AsCComplex PyObject  *op
返回复数的Py_complexop.

如果op不是Python复数对象但有__complex__()方法,则首先调用此方法转换 op到Python complexnumber对象。失败后,此方法返回-1.0作为一个真正的价值.

评论被关闭。