复数对象¶
从C API看,Python的复数对象由两个不同的部分实现:一个是在Python程序使用的Python对象,另外的是一个代表真正复数值的C结构体。API提供了函数共同操作两者。
表示复数的C结构体¶
需要注意的是接受这些结构体的作为参数并当做结果返回的函数,都是传递“值”而不是引用指针。此规则适用于整个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)¶ 返回复数 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
表示。如果 divisor 为空,这个方法返回零并设置
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
¶ This instance of
PyTypeObject
represents the Python complex number type. It is the same object ascomplex
andtypes.ComplexType
.
-
int
PyComplex_Check
(PyObject *p)¶ 如果它的变量是一个C类型
PyComplexObject
或者是C类型PyComplexObject
的子类型,返回真。在 2.2 版更改: Allowed subtypes to be accepted.
-
int
PyComplex_CheckExact
(PyObject *p)¶ 如果它的参数是一个C类型
PyComplexObject
但不是C类型PyComplexObject
的子类型,返回真。2.2 新版功能.
-
PyObject*
PyComplex_FromCComplex
(Py_complex v)¶ - Return value: New reference.
根据C类型
Py_complex
的值生成一个新的Python复数对象。
-
PyObject*
PyComplex_FromDoubles
(double real, double imag)¶ - Return value: New reference.
根据 real 和 imag 返回一个新的C类型
PyComplexObject
对象。
-
Py_complex
PyComplex_AsCComplex
(PyObject *op)¶ Return the
Py_complex
value of the complex number op. Upon failure, this method returns-1.0
as a real value.在 2.6 版更改: If op is not a Python complex number object but has a
__complex__()
method, this method will first be called to convert op to a Python complex number object.