Объекты комплексных чисел
Объекты комплексных чисел Python реализуются как два различных типа при просмотре из C API: один — это объект Python, доступный для программ Python, а другой — структура C, которая представляет фактическое значение комплексного числа. API предоставляет функции для работы с обоими.
Комплексные числа как C-структуры
Обратите внимание, что функции, которые принимают эти структуры в качестве параметров и возвращают их в качестве результатов, делают это by value, а не разыменовывают их с помощью указателей. Это единообразно во всем API.
-
Py_complex
Структура C, которая соответствует части значения объекта комплексного числа Python. Большинство функций для работы с объектами комплексных чисел используют структуры этого типа в качестве входных или выходных значений, в зависимости от ситуации. Он определяется как:
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 имеет значение 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. Это тот же объект, что иcomplex
на уровне Python.
-
int
PyComplex_Check
(PyObject *p) Возвращает истину, если его аргумент —
PyComplexObject
или подтипPyComplexObject
.
-
int
PyComplex_CheckExact
(PyObject *p) Возвращает истину, если его аргумент —
PyComplexObject
, но не подтипPyComplexObject
.
-
PyObject*
PyComplex_FromCComplex
(Py_complex v) - Return value: New reference.
Создать новый объект комплексного числа Python из значения C
Py_complex
.
-
PyObject*
PyComplex_FromDoubles
(double real, double imag) - Return value: New reference.
Возвращает новый объект
PyComplexObject
из real и imag.
-
double
PyComplex_RealAsDouble
(PyObject *op) Возвращает действительную часть op как C
double
.
-
double
PyComplex_ImagAsDouble
(PyObject *op) Возвращает мнимую часть op как C
double
.
-
Py_complex
PyComplex_AsCComplex
(PyObject *op) Возвращает значение
Py_complex
комплексного числа op.Если op не является объектом комплексного числа Python, но имеет метод
__complex__()
, данный метод сначала будет вызван для преобразования op в объект комплексного числа Python. Если__complex__()
не определен, он возвращается к__float__()
. Если__float__()
не определен, он возвращается к__index__()
. В случае сбоя данный метод возвращает-1.0
как действительное значение.Изменено в версии 3.8: Если возможно, использовать
__index__()
.