Объекты с комплексными числами

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

Комплексные числа как структуры языка Си

Обратите внимание, что функции, которые принимают эти структуры в качестве параметров и возвращают их в качестве результатов, делают это по значению, а не разыменовывают их с помощью указателей. Это согласовано во всем 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 равен 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

type PyComplexObject

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

PyTypeObject PyComplex_Type
Part of the Стабильный 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)
Возвращаемое значение: Новая ссылка.

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

PyObject *PyComplex_FromDoubles(double real, double imag)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

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

double PyComplex_RealAsDouble(PyObject *op)
Part of the Стабильный ABI.

Возвращает действительную часть op в виде C double.

double PyComplex_ImagAsDouble(PyObject *op)
Part of the Стабильный 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__(), если это возможно.

Вернуться на верх