complex.md
1> **Источник:** https://python-all.ru/3.0/c-api/complex.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты комплексных чисел89Объекты комплексных чисел в Python реализованы как два различных типа с точки зрения C API: один – это объект Python, доступный программам Python, а другой – структура C, представляющая фактическое значение комплексного числа. API предоставляет функции для работы с обоими.1011## Комплексные числа как C-структуры1213Обратите внимание, что функции, которые принимают эти структуры как параметры и возвращают их как результаты, делают это *по значению*, а не через разыменование указателей. Это единообразно во всём API.1415**\[Py\_complex\]`Py_complex`**1617Структура C, соответствующая части значения объекта комплексного числа Python. Большинство функций для работы с объектами комплексных чисел используют структуры этого типа как входные или выходные значения, в зависимости от ситуации. Она определена как:1819```c20typedef struct {21 double real;22 double imag;23} Py_complex;24```2526**\[\_Py\_c\_sum\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `_Py_c_sum`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *left*, [Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *right*)**2728Возвращает сумму двух комплексных чисел, используя представление C2930[`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex)3132.3334**\[\_Py\_c\_diff\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `_Py_c_diff`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *left*, [Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *right*)**3536Возвращает разность двух комплексных чисел, используя представление C3738[`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex)3940.4142**\[\_Py\_c\_neg\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `_Py_c_neg`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *complex*)**4344Возвращает отрицание комплексного числа4546*complex*4748, используя представление C4950[`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex)5152.5354**\[\_Py\_c\_prod\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `_Py_c_prod`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *left*, [Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *right*)**5556Возвращает произведение двух комплексных чисел, используя представление C5758[`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex)5960.6162**\[\_Py\_c\_quot\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `_Py_c_quot`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *dividend*, [Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *divisor*)**6364Возвращает частное двух комплексных чисел, используя представление C6566[`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex)6768.6970**\[\_Py\_c\_pow\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `_Py_c_pow`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *num*, [Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *exp*)**7172Возвращает возведение7374*num*7576в степень7778*exp*7980, используя представление C8182[`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex)8384.8586## Комплексные числа как объекты Python8788**\[PyComplexObject\]`PyComplexObject`**8990Этот подтип9192[`PyObject`](https://python-all.ru/3.0/c-api/structures.html#PyObject)9394представляет объект комплексного числа Python.9596**\[PyComplex\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyComplex_Type`**9798Этот экземпляр99100[`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject)101102представляет тип комплексных чисел Python. Это тот же объект, что и103104`complex`105106и107108`types.ComplexType`109110.111112**\[PyComplex\_Check\]int `PyComplex_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**113114Возвращает true, если аргумент является115116[`PyComplexObject`](https://python-all.ru/3.0/c-api/complex.html#PyComplexObject)117118или подтипом119120[`PyComplexObject`](https://python-all.ru/3.0/c-api/complex.html#PyComplexObject)121122.123124**\[PyComplex\_CheckExact\]int `PyComplex_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**125126Возвращает true, если аргумент является127128[`PyComplexObject`](https://python-all.ru/3.0/c-api/complex.html#PyComplexObject)129130, но не подтипом131132[`PyComplexObject`](https://python-all.ru/3.0/c-api/complex.html#PyComplexObject)133134.135136**\[PyComplex\_FromCComplex\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyComplex_FromCComplex`([Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) *v*)**137138*Возвращаемое значение: новая ссылка.*139140Создаёт новый объект комплексного числа Python из значения C [`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex).141142**\[PyComplex\_FromDoubles\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyComplex_FromDoubles`(double *real*, double *imag*)**143144*Возвращаемое значение: новая ссылка.*145146Возвращает новый объект [`PyComplexObject`](https://python-all.ru/3.0/c-api/complex.html#PyComplexObject) из *real* и *imag*.147148**\[PyComplex\_RealAsDouble\]double `PyComplex_RealAsDouble`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*op*)**149150Возвращает действительную часть151152*op*153154как C155156`double`157158.159160**\[PyComplex\_ImagAsDouble\]double `PyComplex_ImagAsDouble`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*op*)**161162Возвращает мнимую часть163164*op*165166как C167168`double`169170.171172**\[PyComplex\_AsCComplex\][Py\_complex](https://python-all.ru/3.0/c-api/complex.html#Py_complex) `PyComplex_AsCComplex`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*op*)**173174Возвращает значение [`Py_complex`](https://python-all.ru/3.0/c-api/complex.html#Py_complex) комплексного числа *op*.175176Если *op* не является объектом комплексного числа Python, но имеет метод [`__complex__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__complex__) , то сначала будет вызван этот метод для преобразования *op* в объект комплексного числа Python.177