Протокол чисел¶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 в случае ошибки. Эквивалентно выражению Pythondivmod(o1, o2).
-
PyObject*
PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)¶ - Возвращаемое значение: новая ссылка.
См. встроенную функцию
pow(). Возвращает NULL в случае ошибки. Эквивалентно выражению Pythonpow(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 это поддерживает. Эквивалентно инструкции Pythono1 **= 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)эквивалентен оператору Pythono1, 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
TypeErrorexception 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 withPyNumber_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 (usuallyIndexErrororOverflowError). 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.