復(fù)數(shù)對象?
從C API看,Python的復(fù)數(shù)對象由兩個不同的部分實(shí)現(xiàn):一個是在Python程序使用的Python對象,另外的是一個代表真正復(fù)數(shù)值的C結(jié)構(gòu)體。API提供了函數(shù)共同操作兩者。
表示復(fù)數(shù)的C結(jié)構(gòu)體?
需要注意的是接受這些結(jié)構(gòu)體的作為參數(shù)并當(dāng)做結(jié)果返回的函數(shù),都是傳遞“值”而不是引用指針。此規(guī)則適用于整個API。
-
Py_complex? 這是一個對應(yīng)Python復(fù)數(shù)對象的值部分的C結(jié)構(gòu)體。絕大部分處理復(fù)數(shù)對象的函數(shù)都用這類型的結(jié)構(gòu)體作為輸入或者輸出值,它可近似地定義為:
typedef struct { double real; double imag; } Py_complex;
-
Py_complex
_Py_c_sum(Py_complex?left, Py_complex?right)? 返回兩個復(fù)數(shù)的和,用 C 類型
Py_complex表示。
-
Py_complex
_Py_c_diff(Py_complex?left, Py_complex?right)? 返回兩個復(fù)數(shù)的差,用 C 類型
Py_complex表示。
-
Py_complex
_Py_c_neg(Py_complex?complex)? 返回復(fù)數(shù) complex 的負(fù)值,用 C 類型
Py_complex表示。
-
Py_complex
_Py_c_prod(Py_complex?left, Py_complex?right)? 返回兩個復(fù)數(shù)的乘積,用 C 類型
Py_complex表示。
-
Py_complex
_Py_c_quot(Py_complex?dividend, Py_complex?divisor)? 返回兩個復(fù)數(shù)的商,用 C 類型
Py_complex表示。如果 divisor 為空,這個方法返回零并設(shè)置
errno為EDOM。
-
Py_complex
_Py_c_pow(Py_complex?num, Py_complex?exp)? 返回 num 的 exp 次冪,用 C 類型
Py_complex表示。如果 num 為空且 exp 不是正實(shí)數(shù),這個方法返回零并設(shè)置
errno為EDOM。
表示復(fù)數(shù)的Python對象?
-
PyTypeObject
PyComplex_Type? 這是個屬于
PyTypeObject的代表Python復(fù)數(shù)類型的實(shí)例。在Python層面的類型complex是同一個對象。
-
int
PyComplex_Check(PyObject?*p)? 如果它的變量是一個C類型
PyComplexObject或者是C類型PyComplexObject的子類型,返回真。
-
int
PyComplex_CheckExact(PyObject?*p)? 如果它的參數(shù)是一個C類型
PyComplexObject但不是C類型PyComplexObject的子類型,返回真。
-
PyObject*
PyComplex_FromCComplex(Py_complex?v)? - Return value: New reference.
根據(jù)C類型
Py_complex的值生成一個新的Python復(fù)數(shù)對象。
-
PyObject*
PyComplex_FromDoubles(double?real, double?imag)? - Return value: New reference.
根據(jù) real 和 imag 返回一個新的C類型
PyComplexObject對象。
-
Py_complex
PyComplex_AsCComplex(PyObject?*op)? 返回復(fù)數(shù) op 的C類型
Py_complex值。如果 op 不是一個Python復(fù)數(shù)對象,但是有一個
__complex__()方法,這個方法會首先被調(diào)用,將 op 轉(zhuǎn)換成為一個Python復(fù)數(shù)對象。失敗時,此方法返回-1.0作為實(shí)數(shù)值。
