复数对象¶
从C API中查看时,python的复数对象被实现为两种不同的类型:一种是向python程序公开的python对象,另一种是表示实际复数值的C结构。API提供了使用这两者的函数。
复数作为C结构¶
注意,接受这些结构作为参数并作为结果返回它们的函数是这样做的。 按价值 而不是通过指针取消引用它们。这在整个API中都是一致的。
-
type Py_complex¶
与python复数对象的值部分相对应的C结构。处理复数对象的大多数函数都将这种类型的结构视情况用作输入或输出值。定义为:
typedef struct { double real; double imag; } Py_complex;
-
Py_complex _Py_c_sum(Py_complex left, Py_complex right)¶
返回两个复数的和,使用 C
Py_complex
表示。
-
Py_complex _Py_c_diff(Py_complex left, Py_complex right)¶
返回两个复数之间的差,使用 c
Py_complex
表示。
- Py_complex _Py_c_neg(Py_complex complex)
返回复数的负数 复杂的 ,使用C
Py_complex
表示。
-
Py_complex _Py_c_prod(Py_complex left, Py_complex right)¶
返回两个复数的乘积,使用c
Py_complex
表示。
-
Py_complex _Py_c_quot(Py_complex dividend, Py_complex divisor)¶
返回两个复数的商,使用c
Py_complex
表示。如果 除数 为空,此方法返回零并设置
errno
到EDOM
.
-
Py_complex _Py_c_pow(Py_complex num, Py_complex exp)¶
返回的求幂 num 通过 exp ,使用C
Py_complex
表示。如果 num 是空的 exp 不是正实数,此方法返回零并设置
errno
到EDOM
.
作为python对象的复数¶
-
PyTypeObject PyComplex_Type¶
此实例
PyTypeObject
表示python复数类型。它与complex
在python层中。
-
int PyComplex_Check(PyObject *p)¶
如果其参数为
PyComplexObject
或其子类型PyComplexObject
。此功能总是成功的。
-
int PyComplex_CheckExact(PyObject *p)¶
如果其参数为
PyComplexObject
,但不是的子类型PyComplexObject
。此功能总是成功的。
-
PyObject *PyComplex_FromCComplex(Py_complex v)¶
- Return value: New reference.
从C创建新的python复数对象
Py_complex
价值。
-
PyObject *PyComplex_FromDoubles(double real, double imag)¶
- Return value: New reference.
返回一个新的
PyComplexObject
对象从 real 和 imag .
-
Py_complex PyComplex_AsCComplex(PyObject *op)¶
返回
Py_complex
复数的值 op .如果 op 不是python复数对象,但具有
__complex__()
方法,首先调用此方法以转换 op 到python复数对象。如果__complex__()
未定义,则返回到__float__()
. 如果__float__()
未定义,则返回到__index__()
. 失败时,此方法返回-1.0
作为一个真正的价值。在 3.8 版更改: 使用
__index__()
如果有的话。