复数对象

从 C API 看,Python 的复数对象被实现为两种不同的类型:一种是暴露给 Python 程序的 Python 对象,另一种是代表实际复数值的 C 结构。该 API 提供了可同时使用两者的Function。

复数作为 C 结构

注意,接受这些结构作为参数并返回它们作为结果的函数这样做是“按值” *,而不是pass指针对其进行反引用。这在整个 API 中都是一致的。

typedef struct {
   double real;
   double imag;
} Py_complex;

如果* divisor *为 null,则此方法返回零,并将errno设置为EDOM

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

复数作为 Python 对象

从 C Py_complex值创建一个新的 Python 复数对象。

从* real imag *返回一个新的PyComplexObject对象。

如果* op 不是 Python 复数对象,但是具有complex()方法,则将首先调用此方法以将 op *转换为 Python 复数对象。如果未定义__complex__(),则回退到float()。如果未定义__float__(),则它会退回到index()。失败时,此方法返回-1.0作为实际值。

在 3.8 版中进行了更改:如果可用,请使用index()

首页