Об’єкти комплексних чисел¶
Об’єкти комплексних чисел Python реалізуються як два різних типи, якщо дивитися через C API: один є об’єктом Python, відкритим для програм Python, а інший є структурою C, яка представляє фактичне значення комплексного числа. API надає функції для роботи з обома.
Комплексні числа як C структури¶
Зауважте, що функції, які приймають ці структури як параметри та повертають їх як результати, роблять це за значенням, а не розіменовують їх через покажчики. Це узгоджено в усьому API.
-
type Py_complex¶
The C structure which corresponds to the value portion of a Python complex number object. Most of the functions for dealing with complex number objects use structures of this type as input or output values, as appropriate. It is defined as:
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 num)¶
Повертає заперечення комплексного числа num, використовуючи представлення 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
.If divisor is null, this method returns zero and sets
errno
toEDOM
.
-
Py_complex _Py_c_pow(Py_complex num, Py_complex exp)¶
Повертає піднесення num до степеня exp, використовуючи представлення C
Py_complex
.If num is null and exp is not a positive real number, this method returns zero and sets
errno
toEDOM
.
Комплексні числа як об’єкти Python¶
-
PyTypeObject PyComplex_Type¶
- Part of the Stable ABI.
Цей екземпляр
PyTypeObject
представляє тип комплексного числа Python. Це той самий об’єкт, що йcomplex
на рівні Python.
-
int PyComplex_Check(PyObject *p)¶
Повертає true, якщо його аргумент є
PyComplexObject
або підтипомPyComplexObject
. Ця функція завжди успішна.
-
int PyComplex_CheckExact(PyObject *p)¶
Повертає true, якщо його аргумент є
PyComplexObject
, але не підтипомPyComplexObject
. Ця функція завжди успішна.
-
PyObject *PyComplex_FromCComplex(Py_complex v)¶
- Return value: New reference.
Create a new Python complex number object from a C
Py_complex
value.
-
PyObject *PyComplex_FromDoubles(double real, double imag)¶
- Return value: New reference. Part of the Stable ABI.
Return a new
PyComplexObject
object from real and imag.
-
double PyComplex_RealAsDouble(PyObject *op)¶
- Part of the Stable ABI.
Return the real part of op as a C double.
-
double PyComplex_ImagAsDouble(PyObject *op)¶
- Part of the Stable ABI.
Return the imaginary part of op as a C double.
-
Py_complex PyComplex_AsCComplex(PyObject *op)¶
Повертає значення
Py_complex
комплексного числа op.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. If__complex__()
is not defined then it falls back to__float__()
. If__float__()
is not defined then it falls back to__index__()
. Upon failure, this method returns-1.0
as a real value.Змінено в версії 3.8: Use
__index__()
if available.