Объекты комплексных чисел¶
Объекты комплексных чисел в Python реализованы как два разных типа, если смотреть на них из API языка Си: один - это объект Python, открываемый программам Python, а другой - структура языка Си, которая представляет фактическое значение комплексного числа. 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¶
-
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.
Создайте новый объект комплексного числа Python из значения C
Py_complex.
-
PyObject *
PyComplex_FromDoubles(double real, double imag)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает новый объект
PyComplexObjectиз real и imag.
-
double
PyComplex_RealAsDouble(PyObject *op)¶ - Part of the Stable ABI.
Возвращает вещественную часть op в виде C double.
-
double
PyComplex_ImagAsDouble(PyObject *op)¶ - Part of the 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__(), если доступно.