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

number.md

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

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