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

number.md

328 строк · 23.2 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/c-api/number.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Протокол чисел89**int `PyNumber_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**1011Возвращает1213`1`1415, если объект1617*o*1819предоставляет числовые протоколы, и false в противном случае. Эта функция всегда завершается успешно.2021**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Add`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**2223*Возвращаемое значение: новая ссылка.*2425Возвращает результат сложения *o1* и *o2* или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 + o2`.2627**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Subtract`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**2829*Возвращаемое значение: новая ссылка.*3031Возвращает результат вычитания *o2* из *o1* или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 - o2`.3233**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Multiply`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**3435*Возвращаемое значение: новая ссылка.*3637Возвращает результат умножения *o1* и *o2* или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 * o2`.3839**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_FloorDivide`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**4041*Возвращаемое значение: новая ссылка.*4243Возвращает целую часть от деления *o1* на *o2* или *NULL* в случае ошибки. Эквивалентно «классическому» делению целых чисел.4445**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_TrueDivide`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**4647*Возвращаемое значение: новая ссылка.*4849Возвращает разумное приближение математического значения от деления *o1* на *o2* или *NULL* в случае ошибки. Возвращаемое значение является «приблизительным», потому что числа с плавающей запятой в двоичном представлении приблизительны; невозможно представить все действительные числа в двоичной системе. Эта функция может вернуть значение с плавающей запятой, если ей переданы два целых числа.5051**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Remainder`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**5253*Возвращаемое значение: новая ссылка.*5455Возвращает остаток от деления *o1* на *o2* или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 % o2`.5657**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Divmod`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**5859*Возвращаемое значение: новая ссылка.*6061См. встроенную функцию [`divmod()`](https://python-all.ru/3.1/library/functions.html#divmod). Возвращает *NULL* в случае ошибки. Это эквивалент выражения Python `divmod(o1, o2)`.6263**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Power`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o3*)**6465*Возвращаемое значение: новая ссылка.*6667См. встроенную функцию [`pow()`](https://python-all.ru/3.1/library/functions.html#pow). Возвращает *NULL* в случае ошибки. Это эквивалент выражения Python `pow(o1, o2, o3)`, где *o3* необязателен. Если *o3* нужно игнорировать, передайте [`Py_None`](https://python-all.ru/3.1/c-api/none.html#Py_None) вместо него (передача *NULL* для *o3* привела бы к недопустимому доступу к памяти).6869**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Negative`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**7071*Возвращаемое значение: новая ссылка.*7273Возвращает отрицание *o* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `-o`.7475**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Positive`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**7677*Возвращаемое значение: новая ссылка.*7879Возвращает *o* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `+o`.8081**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Absolute`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**8283*Возвращаемое значение: новая ссылка.*8485Возвращает абсолютное значение *o* или *NULL* в случае ошибки. Это эквивалент выражения Python `abs(o)`.8687**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Invert`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**8889*Возвращаемое значение: новая ссылка.*9091Возвращает побитовое отрицание *o* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `~o`.9293**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Lshift`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**9495*Возвращаемое значение: новая ссылка.*9697Возвращает результат сдвига *o1* влево на *o2* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 << o2`.9899**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Rshift`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**100101*Возвращаемое значение: новая ссылка.*102103Возвращает результат сдвига *o1* вправо на *o2* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 >> o2`.104105**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_And`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**106107*Возвращаемое значение: новая ссылка.*108109Возвращает побитовое И (and) *o1* и *o2* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 & o2`.110111**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Xor`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**112113*Возвращаемое значение: новая ссылка.*114115Возвращает побитовое исключающее ИЛИ (xor) *o1* и *o2* в случае успеха или *NULL* в случае ошибки. Это эквивалент выражения Python `o1 ^ o2`.116117**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Or`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**118119*Возвращаемое значение: новая ссылка.*120121Возвращает «побитовое ИЛИ» *o1* и *o2* в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `o1 | o2`.122123**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceAdd`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**124125*Возвращаемое значение: новая ссылка.*126127Возвращает результат сложения *o1* и *o2* или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 += o2`.128129**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceSubtract`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**130131*Возвращаемое значение: новая ссылка.*132133Возвращает результат вычитания *o2* из *o1* или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 -= o2`.134135**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceMultiply`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**136137*Возвращаемое значение: новая ссылка.*138139Возвращает результат умножения *o1* и *o2* или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 *= o2`.140141**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceFloorDivide`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**142143*Возвращаемое значение: новая ссылка.*144145Возвращает результат целочисленного деления с округлением вниз (floor) *o1* на *o2* или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 //= o2`.146147**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceTrueDivide`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**148149*Возвращаемое значение: новая ссылка.*150151Возвращает разумное приближение математического значения от деления *o1* на *o2* или *NULL* в случае ошибки. Возвращаемое значение является «приблизительным», потому что числа с плавающей запятой в двоичном представлении приблизительны; невозможно представить все действительные числа в двоичной системе. Эта функция может вернуть значение с плавающей запятой, если ей переданы два целых числа. Операция выполняется *на месте*, если *o1* это поддерживает.152153**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceRemainder`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**154155*Возвращаемое значение: новая ссылка.*156157Возвращает остаток от деления *o1* на *o2* или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 %= o2`.158159**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlacePower`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o3*)**160161*Возвращаемое значение: новая ссылка.*162163См. встроенную функцию [`pow()`](https://python-all.ru/3.1/library/functions.html#pow). Возвращает *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 **= o2`, когда o3 равен [`Py_None`](https://python-all.ru/3.1/c-api/none.html#Py_None), или вариант на месте (in-place) для `pow(o1, o2, o3)` в противном случае. Если *o3* нужно игнорировать, передайте [`Py_None`](https://python-all.ru/3.1/c-api/none.html#Py_None) вместо него (передача *NULL* для *o3* приведет к недопустимому доступу к памяти).164165**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceLshift`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**166167*Возвращаемое значение: новая ссылка.*168169Возвращает результат сдвига *o1* влево на *o2* в случае успеха или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 <<= o2`.170171**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceRshift`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**172173*Возвращаемое значение: новая ссылка.*174175Возвращает результат сдвига *o1* вправо на *o2* в случае успеха или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 >>= o2`.176177**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceAnd`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**178179*Возвращаемое значение: новая ссылка.*180181Возвращает результат побитового И (bitwise and) *o1* и *o2* в случае успеха или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 &= o2`.182183**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceXor`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**184185*Возвращаемое значение: новая ссылка.*186187Возвращает результат побитового исключающего ИЛИ (bitwise exclusive or) *o1* и *o2* в случае успеха или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 ^= o2`.188189**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_InPlaceOr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*)**190191*Возвращаемое значение: новая ссылка.*192193Возвращает «побитовое ИЛИ» *o1* и *o2* в случае успеха или *NULL* при ошибке. Операция выполняется *на месте (in-place)*, если *o1* это поддерживает. Это эквивалент оператора Python `o1 |= o2`.194195**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Int`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**196197*Возвращаемое значение: новая ссылка.*198199Возвращает *o*, преобразованный в целое число (объект int) в случае успеха, или *NULL* при ошибке. Это эквивалент выражения Python `int(o)`.200201> **Примечание**202>203> Эта функция определена в переходном заголовочном файле `intobject.h`. Она будет полностью удалена в Python 3.1. Вместо неё используйте функцию [`PyNumber_Long()`](https://python-all.ru/3.1/c-api/number.html#PyNumber_Long).204205**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Long`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**206207*Возвращаемое значение: новая ссылка.*208209Возвращает *o*, преобразованный в целое число (объект int) в случае успеха, или *NULL* при ошибке. Это эквивалент выражения Python `int(o)`.210211**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Float`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**212213*Возвращаемое значение: новая ссылка.*214215Возвращает *o*, преобразованный в число с плавающей точкой (объект float) в случае успеха, или *NULL* при ошибке. Это эквивалент выражения Python `float(o)`.216217**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_Index`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**218219Возвращает220221*o*222223, преобразованный в целое число Python (int) в случае успеха, или224225*NULL*226227с возбуждением исключения228229[`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError)230231при ошибке.232233**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyNumber_ToBase`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*n*, int *base*)**234235Возвращает целое число236237*n*238239, преобразованное в строку в системе счисления240241*base*242243с префиксом244245`'0b'`246247,248249`'0o'`250251или252253`'0x'`254255, если применимо. Если256257*base*258259не равно 2, 8, 10 или 16, используется формат260261`'x#num'`262263, где x – это основание. Если264265*n*266267не является объектом int, он сначала преобразуется с помощью268269[`PyNumber_Index()`](https://python-all.ru/3.1/c-api/number.html#PyNumber_Index)270271.272273**Py\_ssize\_t `PyNumber_AsSsize_t`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*exc*)**274275Возвращает276277*o*278279, преобразованное в значение Py\_ssize\_t, если280281*o*282283может быть интерпретировано как целое число. Если284285*o*286287может быть преобразовано в Python int, но попытка преобразования в Py\_ssize\_t вызовет288289[`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError)290291, то аргумент292293*exc*294295– это тип исключения, которое будет возбуждено (обычно296297[`IndexError`](https://python-all.ru/3.1/library/exceptions.html#IndexError)298299или300301[`OverflowError`](https://python-all.ru/3.1/library/exceptions.html#OverflowError)302303). Если304305*exc*306307равен308309*NULL*310311, то исключение сбрасывается, а значение усекается до312313*PY\_SSIZE\_T\_MIN*314315для отрицательного целого или316317*PY\_SSIZE\_T\_MAX*318319для положительного.320321**int `PyIndex_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**322323Возвращает True, если324325*o*326327является индексным целым числом (т.е. имеет заполненный слот nb\_index в структуре tp\_as\_number).328