复数对象 – 具体对象层(Python教程)(参考资料)
复数对象
从C API中查看时,Python的复数对象被实现为两种不同的类型:一种是暴露给Python程序的Python对象,另一种是表示实际复数值的C结构.API提供了使用它们的函数。
复数作为C结构
请注意,接受这些结构作为参数和返回的函数作为结果by value而不是通过指针取消引用它们。整个API都是一致的.
Py_complex
- C结构,对应于Python complexnumber对象的值部分。处理复数对象的大多数函数都适当地使用此类型的结构作为输入或输出值。它被定义为:
typedef struct { double real; double imag; } 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为null,此方法返回零并设置
errno
至EDOM
.
- Py_complex
_Py_c_pow
(Py_complex num,Py_complex exp) - 返回num按exp,使用C
Py_complex
表示。如果num是null和exp不是正实数,此方法返回零并将
errno
设置为EDOM
.
复数作为Python对象
PyComplexObject
PyObject
的子类型代表Python复合体数字对象.
- PyTypeObject
PyComplex_Type
PyTypeObject
的这个实例表示Python复数numbertype。它与Python层中的complex
是同一个对象.
- 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
Py_complex
值。
- PyObject *
PyComplex_FromDoubles
(双 real,双 imag) - Return value: New reference.
返回一个新的
PyComplexObject
对象来自real和imag.
- 双
PyComplex_RealAsDouble
(PyObject *op) - 返回op的真实部分作为C
double
.
- 双
PyComplex_ImagAsDouble
( PyObject *op) - 返回op的虚部作为C
double
.
- Py_complex
PyComplex_AsCComplex
( PyObject *op) - 返回复数的
Py_complex
值op.如果op不是Python复数对象但有
__complex__()
方法,则首先调用此方法转换 op到Python complexnumber对象。失败后,此方法返回-1.0
作为一个真正的价值.
评论被关闭。