Объекты комплексных чисел¶
Объекты комплексных чисел в 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__()
, если доступно.