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

Протокол чиселNumber Protocol

int PyNumber_Check(PyObject *o)

Возвращает 1, если объект o предоставляет числовые протоколы, и false в противном случае. Эта функция всегда завершается успешно.

PyObject* PyNumber_Add(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат сложения o1 и o2 или NULL в случае ошибки. Эквивалентно выражению Python o1 + o2.

PyObject* PyNumber_Subtract(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат вычитания o2 из o1 или NULL в случае ошибки. Эквивалентно выражению Python o1 - o2.

PyObject* PyNumber_Multiply(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат умножения o1 и o2 или NULL в случае ошибки. Эквивалентно выражению Python o1 * o2.

PyObject* PyNumber_Divide(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Returns the result of dividing o1 by o2, or NULL on failure. This is the equivalent of the Python expression o1 / o2.

PyObject* PyNumber_FloorDivide(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает целую часть от деления o1 на o2 или NULL в случае ошибки. Эквивалентно «классическому» делению целых чисел.

Новое в версии 2.2.

PyObject* PyNumber_TrueDivide(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает разумное приближение математического значения от деления o1 на o2 или NULL в случае ошибки. Возвращаемое значение является «приблизительным», потому что числа с плавающей запятой в двоичном представлении приблизительны; невозможно представить все действительные числа в двоичной системе. Эта функция может вернуть значение с плавающей запятой, если ей переданы два целых числа.

Новое в версии 2.2.

PyObject* PyNumber_Remainder(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает остаток от деления o1 на o2 или NULL в случае ошибки. Эквивалентно выражению Python o1 % o2.

PyObject* PyNumber_Divmod(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

См. встроенную функцию divmod(). Возвращает NULL в случае ошибки. Эквивалентно выражению Python divmod(o1, o2).

PyObject* PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)
Возвращаемое значение: новая ссылка.

См. встроенную функцию pow(). Возвращает NULL в случае ошибки. Эквивалентно выражению Python pow(o1, o2, o3), где o3 является необязательным. Если o3 нужно проигнорировать, передайте Py_None вместо него (передача NULL для o3 приведёт к недопустимому доступу к памяти).

PyObject* PyNumber_Negative(PyObject *o)
Возвращаемое значение: новая ссылка.

Возвращает отрицание o в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python -o.

PyObject* PyNumber_Positive(PyObject *o)
Возвращаемое значение: новая ссылка.

Возвращает o в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python +o.

PyObject* PyNumber_Absolute(PyObject *o)
Возвращаемое значение: новая ссылка.

Возвращает абсолютное значение o или NULL в случае ошибки. Эквивалентно выражению Python abs(o).

PyObject* PyNumber_Invert(PyObject *o)
Возвращаемое значение: новая ссылка.

Возвращает побитовое отрицание o в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python ~o.

PyObject* PyNumber_Lshift(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат сдвига o1 влево на o2 в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python o1 << o2.

PyObject* PyNumber_Rshift(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат сдвига o1 вправо на o2 в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python o1 >> o2.

PyObject* PyNumber_And(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат «побитового И» над o1 и o2 в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python o1 & o2.

PyObject* PyNumber_Xor(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат «побитового исключающего ИЛИ» над o1 и o2 в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python o1 ^ o2.

PyObject* PyNumber_Or(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат «побитового ИЛИ» над o1 и o2 в случае успеха или NULL в случае ошибки. Эквивалентно выражению Python o1 | o2.

PyObject* PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат сложения o1 и o2 или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 += o2.

PyObject* PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат вычитания o2 из o1 или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 -= o2.

PyObject* PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат умножения o1 и o2 или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 *= o2.

PyObject* PyNumber_InPlaceDivide(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Returns the result of dividing o1 by o2, or NULL on failure. The operation is done in-place when o1 supports it. This is the equivalent of the Python statement o1 /= o2.

PyObject* PyNumber_InPlaceFloorDivide(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает целую часть от деления o1 на o2 или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 //= o2.

Новое в версии 2.2.

PyObject* PyNumber_InPlaceTrueDivide(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает разумное приближение математического значения от деления o1 на o2 или NULL в случае ошибки. Возвращаемое значение является «приблизительным», потому что числа с плавающей запятой в двоичном представлении приблизительны; невозможно представить все действительные числа в двоичной системе. Эта функция может вернуть значение с плавающей запятой, если ей переданы два целых числа. Операция выполняется на месте, если o1 это поддерживает.

Новое в версии 2.2.

PyObject* PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает остаток от деления o1 на o2 или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 %= o2.

PyObject* PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3)
Возвращаемое значение: новая ссылка.

См. встроенную функцию pow(). Возвращает NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 **= o2, когда o3 равно Py_None, или варианту с изменением на месте для pow(o1, o2, o3) в противном случае. Если o3 нужно проигнорировать, передайте Py_None вместо него (передача NULL для o3 приведёт к недопустимому доступу к памяти).

PyObject* PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат сдвига o1 влево на o2 в случае успеха или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 <<= o2.

PyObject* PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат сдвига o1 вправо на o2 в случае успеха или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 >>= o2.

PyObject* PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат «побитового И» над o1 и o2 в случае успеха или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 &= o2.

PyObject* PyNumber_InPlaceXor(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат «побитового исключающего ИЛИ» над o1 и o2 в случае успеха или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 ^= o2.

PyObject* PyNumber_InPlaceOr(PyObject *o1, PyObject *o2)
Возвращаемое значение: новая ссылка.

Возвращает результат «побитового ИЛИ» над o1 и o2 в случае успеха или NULL в случае ошибки. Операция выполняется на месте, если o1 это поддерживает. Эквивалентно инструкции Python o1 |= o2.

int PyNumber_Coerce(PyObject **p1, PyObject **p2)

Эта функция принимает адреса двух переменных типа PyObject*. Если объекты, на которые указывают *p1 и *p2, имеют один тип, увеличивает их счётчик ссылок и возвращает 0 (успех). Если объекты можно преобразовать к общему числовому типу, заменяет *p1 и *p2 на их преобразованные значения (с «новыми» счётчиками ссылок) и возвращает 0. Если преобразование невозможно или произошла другая ошибка, возвращает -1 (неудача) и не увеличивает счётчики ссылок. Вызов PyNumber_Coerce(&o1, &o2) эквивалентен оператору Python o1, o2 = coerce(o1, o2).

int PyNumber_CoerceEx(PyObject **p1, PyObject **p2)

Эта функция похожа на PyNumber_Coerce(), за исключением того, что возвращает 1, когда преобразование невозможно и не возникает ошибки. Счётчики ссылок в этом случае по-прежнему не увеличиваются.

PyObject* PyNumber_Int(PyObject *o)
Возвращаемое значение: новая ссылка.

Returns the o converted to an integer object on success, or NULL on failure. If the argument is outside the integer range a long object will be returned instead. This is the equivalent of the Python expression int(o).

PyObject* PyNumber_Long(PyObject *o)
Возвращаемое значение: новая ссылка.

Returns the o converted to a long integer object on success, or NULL on failure. This is the equivalent of the Python expression long(o).

PyObject* PyNumber_Float(PyObject *o)
Возвращаемое значение: новая ссылка.

Возвращает o, преобразованный в объект float в случае успеха, или NULL в случае\nошибки. Это эквивалент выражения Python float(o).

PyObject* PyNumber_Index(PyObject *o)

Returns the o converted to a Python int or long on success or NULL with a TypeError exception raised on failure.

Новое в версии 2.5.

PyObject* PyNumber_ToBase(PyObject *n, int base)

Returns the integer n converted to base as a string with a base marker of '0b', '0o', or '0x' if applicable. When base is not 2, 8, 10, or 16, the format is 'x#num' where x is the base. If n is not an int object, it is converted with PyNumber_Index() first.

Новое в версии 2.6.

Py_ssize_t PyNumber_AsSsize_t(PyObject *o, PyObject *exc)

Returns o converted to a Py_ssize_t value if o can be interpreted as an integer. If o can be converted to a Python int or long but the attempt to convert to a Py_ssize_t value would raise an OverflowError, then the exc argument is the type of exception that will be raised (usually IndexError or OverflowError). If exc is NULL, then the exception is cleared and the value is clipped to PY_SSIZE_T_MIN for a negative integer or PY_SSIZE_T_MAX for a positive integer.

Новое в версии 2.5.

int PyIndex_Check(PyObject *o)

Возвращает 1, если o является индексным целым (слот nb_index структуры tp_as_number заполнен), и 0 в противном случае.

Новое в версии 2.5.