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

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

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

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

Обратите внимание, что функции, которые принимают эти структуры как параметры и возвращают их как результаты, делают это по значению, а не через разыменование указателей. Это единообразно во всём 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 .
Py_complex _Py_c_pow(Py_complex num, Py_complex exp)
Возвращает возведение num в степень exp, используя представление C Py_complex .

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

PyComplexObject
Этот подтип PyObject представляет объект комплексного числа Python.
PyTypeObject PyComplex_Type
Этот экземпляр 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)
Возвращаемое значение: новая ссылка.

Возвращает новый объект 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.