Документация Python неофициальный перевод
Содержание страницы

Объекты комплексных чиселComplex Number Objects

Объекты комплексных чисел в Python реализованы как два различных типа с точки зрения C API: один – это объект Python, доступный программам Python, а другой – структура C, представляющая фактическое значение комплексного числа. API предоставляет функции для работы с обоими.

Комплексные числа как C-структурыComplex Numbers as C Structures

Обратите внимание, что функции, которые принимают эти структуры как параметры и возвращают их как результаты, делают это по значению, а не через разыменование указателей. Это единообразно во всём API.

type 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 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.

Если divisor равен нулю, метод возвращает ноль и устанавливает errno в EDOM.

Py_complex _Py_c_pow(Py_complex num, Py_complex exp)

Возвращает возведение num в степень exp, используя C-представление Py_complex.

Если num равен нулю, а exp не является положительным действительным числом, метод возвращает ноль и устанавливает errno в EDOM.

Комплексные числа как объекты PythonComplex Numbers as Python Objects

type PyComplexObject

Этот подтип PyObject представляет объект комплексного числа Python.

PyTypeObject PyComplex_Type
Часть Stable ABI.

Этот экземпляр PyTypeObject представляет тип комплексного числа Python. Это тот же объект, что и complex в слое Python.

int PyComplex_Check(PyObject *p)

Возвращает истину, если аргумент является PyComplexObject или подтипом PyComplexObject. Эта функция всегда завершается успешно.

int PyComplex_CheckExact(PyObject *p)

Возвращает истину, если аргумент является PyComplexObject, но не подтипом PyComplexObject. Эта функция всегда завершается успешно.

PyObject *PyComplex_FromCComplex(Py_complex v)
Возвращаемое значение: новая ссылка.

Создаёт новый объект комплексного числа Python из значения C Py_complex.

PyObject *PyComplex_FromDoubles(double real, double imag)
Возвращаемое значение: новая ссылка. Часть Stable ABI.

Возвращает новый объект PyComplexObject из real и imag.

double PyComplex_RealAsDouble(PyObject *op)
Часть Stable ABI.

Возвращает вещественную часть op как C double.

double PyComplex_ImagAsDouble(PyObject *op)
Часть Stable ABI.

Возвращает мнимую часть 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__(), если доступно.