数字协议

int PyNumber_Check(PyObject *o)

如果对象 ‘o’ 提供数字协议,返回真(1),否则返回假(0)。这个函数总是有返回值的。

PyObject* PyNumber_Add(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2*相加的结果,如果失败,返回 *NULL 。等价于Python中的表达式 o1 + o2

PyObject* PyNumber_Subtract(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 减去 o2 的结果,如果失败,返回 NULL 。等价于Python中的表达式 o1 - o2

PyObject* PyNumber_Multiply(PyObject *o1, PyObject *o2)
Return value: New reference.

返回*o1* 、o2*相乘的结果,如果失败,返回 *NULL 。等价于Python中的表达式 o1 * o2

PyObject* PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2)
Return value: New reference.

返回*o1* 、o2*做矩阵乘法的结果,如果失败,返回 *NULL 。等价于Python中的表达式 o1 @ o2

3.5 新版功能.

PyObject* PyNumber_FloorDivide(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 除以 o2 的向下取整后的结果,如果失败,返回 NULL。等价于"传统"的整数除法。

PyObject* PyNumber_TrueDivide(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 除以 o2 的一个合理的近似值,如果失败,返回 NULL。这个值是近似的是因为二进制浮点数是一个近似值,它不可能表示出以2为基数的所有实数。这个函数返回两个整数相除得到的浮点数。

PyObject* PyNumber_Remainder(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 除以 o2 得到的余数,如果失败,返回 NULL。等价于Python中的表达式 o1 % o2

PyObject* PyNumber_Divmod(PyObject *o1, PyObject *o2)
Return value: New reference.

参考内置函数 divmod()。如果失败,返回 NULL。等价于Python中的表达式 divmod(o1, o2)

PyObject* PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)
Return value: New reference.

请参阅内置函数 pow()。 如果失败,返回 NULL。 等价于 Python 中的表达式 pow(o1, o2, o3),其中 o3 是可选的。如果缺少 o3,则传入 Py_None 作为代替(如果传入 NULL 会导致非法内存访问)。

PyObject* PyNumber_Negative(PyObject *o)
Return value: New reference.

返回 o 的负值,如果失败,返回 NULL 。等价于Python中的表达式 -o

PyObject* PyNumber_Positive(PyObject *o)
Return value: New reference.

返回 o ,如果失败,返回 NULL 。等价于Python中的表达式 +o

PyObject* PyNumber_Absolute(PyObject *o)
Return value: New reference.

返回 ”o“ 的绝对值,如果失败,返回 NULL。等价于Python中的表达式 abs(o)

PyObject* PyNumber_Invert(PyObject *o)
Return value: New reference.

返回 o 的按位取反后的结果,如果失败,返回 NULL 。等价于Python中的表达式 ~o

PyObject* PyNumber_Lshift(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 左移 o2 个比特后的结果,如果失败,返回 NULL 。等价于Python中的表达式 o1 << o2

PyObject* PyNumber_Rshift(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 右移 o2 个比特后的结果,如果失败,返回 NULL 。等价于Python中的表达式 o1 >> o2

PyObject* PyNumber_And(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2 “按位与”的结果,如果失败,返回 NULL 。等价于Python中的表达式 o1 & o2

PyObject* PyNumber_Xor(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2 “按位异或”的结果,如果失败,返回 NULL 。等价于Python中的表达式 o1 ^ o2

PyObject* PyNumber_Or(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2 “按位或”的结果,如果失败,返回 NULL 。等价于Python中的表达式 o1 | o2

PyObject* PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2*相加的结果,如果失败,返回 *NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 += o2

PyObject* PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 减去 o2*的结果,如果失败,返回 *NULL 。当 o1 支持时,这个运算完成后将值赋给 o1 。 等价于Python中的语句 o1 -= o2

PyObject* PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2*相乘的结果,如果失败,返回 *NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 *= o2

PyObject* PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1o2*做矩阵乘法后的结果,如果失败,返回 *NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 @= o2

3.5 新版功能.

PyObject* PyNumber_InPlaceFloorDivide(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 除以 o2 后向下取整的结果,如果失败,返回 NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 //= o2

PyObject* PyNumber_InPlaceTrueDivide(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 除以 o2 的一个合理的近似值,如果失败,返回 NULL。这个值是近似的是因为二进制浮点数是一个近似值,它不可能表示出以2为基数的所有实数。这个函数返回两个整数相除得到的浮点数。当 o1 支持时,这个运算完成后将值赋给 o1.

PyObject* PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 除以 o2 得到的余数,如果失败,返回 NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 %= o2

PyObject* PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3)
Return value: New reference.

请参阅内置函数 pow()。 如果失败,返回 NULL。当 o1 支持时,这个运算完成后将值赋给 o1。等价价于 Python 中的表达式 pow(o1, o2, o3),其中 o3 是可选的。如果缺少 o3,则传入 Py_None 作为代替(如果传入 NULL 会导致非法内存访问)。如果 o3Py_None , 则该函数等价于 Python 中的语句 o1 **= o2

PyObject* PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 左移 o2 个比特后的结果,如果失败,返回 NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 <<= o2

PyObject* PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2)
Return value: New reference.

返回 o1 右移 o2 个比特后的结果,如果失败,返回 NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句 o1 >>= o2

PyObject* PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2)
Return value: New reference.

Returns the "bitwise and" of o1 and o2 on success and 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_InPlaceXor(PyObject *o1, PyObject *o2)
Return value: New reference.

Returns the "bitwise exclusive or" of o1 by o2 on success, 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_InPlaceOr(PyObject *o1, PyObject *o2)
Return value: New reference.

Returns the "bitwise or" of o1 and o2 on success, 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_Long(PyObject *o)
Return value: New reference.

返回 o 转换成整数类型的对象后的结果,如果失败,返回 NULL 。等价于Python中的表达式 int(o)

PyObject* PyNumber_Float(PyObject *o)
Return value: New reference.

返回 o 转换成浮点数类型的对象后的结果,如果失败,返回 NULL。等价于Python中的表达式 float(o)

PyObject* PyNumber_Index(PyObject *o)
Return value: New reference.

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

PyObject* PyNumber_ToBase(PyObject *n, int base)
Return value: New reference.

Returns the integer n converted to base base as a string. The base argument must be one of 2, 8, 10, or 16. For base 2, 8, or 16, the returned string is prefixed with a base marker of '0b', '0o', or '0x', respectively. If n is not a Python int, it is converted with PyNumber_Index() first.

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 the call fails, an exception is raised and -1 is returned.

If o can be converted to a Python int 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.

int PyIndex_Check(PyObject *o)

Returns 1 if o is an index integer (has the nb_index slot of the tp_as_number structure filled in), and 0 otherwise. This function always succeeds.