Complex Number Objects¶
当从C API查看时,Python的复数对象被实现为两个不同类型:一个是暴露给Python程序的Python对象,另一个是表示实际复数值的C结构。API提供了与两者协同工作的功能。
Complex Numbers as C Structures¶
注意,接受这些结构作为参数并返回它们作为结果的函数通过值这样做,而不是通过指针来解引用它们。这在整个API中是一致的。
-
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
表示法返回两个复数的商。如果除数为null,则此方法返回零并将
errno
设置为EDOM
。
- Py_complex
_Py_c_pow
(Py_complex num, Py_complex exp)¶ 使用C
Py_complex
表示法返回num的乘幂exp。如果num为空且exp不是正实数,则此方法返回零并将
errno
设置为EDOM
。
Complex Numbers as Python Objects¶
- PyTypeObject
PyComplex_Type
¶ 此实例
PyTypeObject
表示Python复数类型。它与Python层中的complex
是同一个对象。
- 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)¶ - 返回值:新引用。
从真实和imag返回一个新的
PyComplexObject
对象。
- Py_complex
PyComplex_AsCComplex
(PyObject *op)¶ 返回复数op的
Py_complex
值。如果op不是Python复数对象,但是具有
__complex__()
方法,则首先将调用此方法将op转换为Python复数对象。失败时,此方法返回-1.0
作为实数值。