On this page
复数对象
从 C API 看,Python 的复数对象被实现为两种不同的类型:一种是暴露给 Python 程序的 Python 对象,另一种是代表实际复数值的 C 结构。该 API 提供了可同时使用两者的Function。
复数作为 C 结构
注意,接受这些结构作为参数并返回它们作为结果的函数这样做是“按值” *,而不是pass指针对其进行反引用。这在整个 API 中都是一致的。
Py_complex
- 对应于 Python 复数对象的值部分的 C 结构。大多数处理复数对象的Function都视情况使用此类型的结构作为 Importing 或输出值。它定义为:
typedef struct {
double real;
double imag;
} Py_complex;
Py_complex
_Py_c_sum
(Py_complex 左,Py_complex 右)- 使用 C Py_complex表示形式返回两个复数的和。
Py_complex
_Py_c_diff
(Py_complex 左,Py_complex 右)- 使用 C Py_complex表示形式返回两个复数之间的差。
Py_complex
_Py_c_neg
(Py_complex * complex *)- 使用 C Py_complex表示返回复数* complex *的取反。
Py_complex
_Py_c_prod
(Py_complex 左,Py_complex 右)- 使用 C Py_complex表示形式返回两个复数的乘积。
Py_complex
_Py_c_quot
(Py_complex 股息,Py_complex 除数)- 使用 C Py_complex表示形式返回两个复数的商。
如果* divisor *为 null,则此方法返回零,并将errno
设置为EDOM
。
- Py_complex
_Py_c_pow
(Py_complex * num *,Py_complex * exp *)- 使用 C Py_complex表示形式,pass* exp 返回 num *的幂。
如果* num 为 null 且 exp *不是正实数,则此方法返回零并将errno
设置为EDOM
。
复数作为 Python 对象
PyComplexObject
- PyObject的此子类型表示 Python 复数对象。
PyTypeObject
PyComplex_Type
- PyTypeObject的实例表示 Python 复数类型。它与 Python 层中的complex是同Pair象。
int
PyComplex_Check
(PyObject ** p *)- 如果其参数是PyComplexObject或PyComplexObject的子类型,则返回 true。
int
PyComplex_CheckExact
(PyObject ** p *)- 如果其参数是PyComplexObject,而不是PyComplexObject的子类型,则返回 true。
PyObject *
PyComplex_FromCComplex
(Py_complex * v *)- 返回值:新参考.
从 C Py_complex值创建一个新的 Python 复数对象。
- PyObject *
PyComplex_FromDoubles
(double * real *,double * imag *)- 返回值:新参考.
从* real 和 imag *返回一个新的PyComplexObject对象。
双
PyComplex_RealAsDouble
(PyObject ** op *)- 将* op *的实数部分返回为 C
double
。
- 将* op *的实数部分返回为 C
双
PyComplex_ImagAsDouble
(PyObject ** op *)- 将* op *的虚部作为 C
double
返回。
- 将* op *的虚部作为 C
Py_complex
PyComplex_AsCComplex
(PyObject ** op *)- 返回复数* op *的Py_complex值。
如果* op 不是 Python 复数对象,但是具有complex()方法,则将首先调用此方法以将 op *转换为 Python 复数对象。如果未定义__complex__()
,则回退到float()。如果未定义__float__()
,则它会退回到index()。失败时,此方法返回-1.0
作为实际值。
在 3.8 版中进行了更改:如果可用,请使用index()。