数字协议¶
-
PyObject*
PyNumber_Add
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
返回 o1 、o2*相加的结果,如果失败,返回 *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_Divide
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
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)¶ - Return value: New reference.
返回 o1 除以 o2 的向下取整后的结果,如果失败,返回 NULL。等价于”传统”的整数除法。
2.2 新版功能.
-
PyObject*
PyNumber_TrueDivide
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
返回 o1 除以 o2 的一个合理的近似值,如果失败,返回 NULL。这个值是近似的是因为二进制浮点数是一个近似值,它不可能表示出以2为基数的所有实数。这个函数返回两个整数相除得到的浮点数。
2.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.
返回 o1 和 o2 “按位与”的结果,如果失败,返回 NULL 。等价于Python中的表达式
o1 & o2
。
-
PyObject*
PyNumber_Xor
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
返回 o1 和 o2 “按位异或”的结果,如果失败,返回 NULL 。等价于Python中的表达式
o1 ^ o2
。
-
PyObject*
PyNumber_Or
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
返回 o1 和 o2 “按位或”的结果,如果失败,返回 NULL 。等价于Python中的表达式
o1 | o2
-
PyObject*
PyNumber_InPlaceAdd
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
返回 o1 、o2*相加的结果,如果失败,返回 *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.
返回 o1 、o2*相乘的结果,如果失败,返回 *NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句
o1 *= o2
。
-
PyObject*
PyNumber_InPlaceDivide
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
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)¶ - Return value: New reference.
返回 o1 除以 o2 后向下取整的结果,如果失败,返回 NULL 。当 o1 支持时,这个运算完成后将值赋给 o1。 等价于Python中的语句
o1 //= o2
。2.2 新版功能.
-
PyObject*
PyNumber_InPlaceTrueDivide
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
返回 o1 除以 o2 的一个合理的近似值,如果失败,返回 NULL。这个值是近似的是因为二进制浮点数是一个近似值,它不可能表示出以2为基数的所有实数。这个函数返回两个整数相除得到的浮点数。当 o1 支持时,这个运算完成后将值赋给 o1.
2.2 新版功能.
-
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 会导致非法内存访问)。如果 o3 是Py_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
.
-
int
PyNumber_Coerce
(PyObject **p1, PyObject **p2)¶ This function takes the addresses of two variables of type
PyObject*
. If the objects pointed to by*p1
and*p2
have the same type, increment their reference count and return0
(success). If the objects can be converted to a common numeric type, replace*p1
and*p2
by their converted value (with ‘new’ reference counts), and return0
. If no conversion is possible, or if some other error occurs, return-1
(failure) and don’t increment the reference counts. The callPyNumber_Coerce(&o1, &o2)
is equivalent to the Python statemento1, o2 = coerce(o1, o2)
.
-
int
PyNumber_CoerceEx
(PyObject **p1, PyObject **p2)¶ This function is similar to
PyNumber_Coerce()
, except that it returns1
when the conversion is not possible and when no error is raised. Reference counts are still not increased in this case.
-
PyObject*
PyNumber_Int
(PyObject *o)¶ - Return value: New reference.
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)¶ - Return value: New reference.
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)¶ - Return value: New reference.
返回 o 转换成浮点数类型的对象后的结果,如果失败,返回 NULL。等价于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 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 (usuallyIndexError
orOverflowError
). 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 新版功能.