Number Protocol¶
- PyObject*
PyNumber_Add
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回在故障时添加o1和o2或NULL的结果。这等效于Python表达式
o1 + o2
。
- PyObject*
PyNumber_Subtract
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回在故障时从o1中减去o2或NULL的结果。这等效于Python表达式
o1 - o2
。
- PyObject*
PyNumber_Multiply
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回失败时乘以o1和o2或NULL的结果。这等效于Python表达式
o1 * o2
。
- PyObject*
PyNumber_MatrixMultiply
(PyObject *o1, PyObject *o2)¶ 返回失败时o1和o2或NULL的矩阵乘法结果。这等效于Python表达式
o1 @ o2
。版本3.5中的新功能。
- PyObject*
PyNumber_FloorDivide
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在故障时返回o1除以o2或NULL的下限。这相当于整数的“经典”分割。
- PyObject*
PyNumber_TrueDivide
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在故障时为o1除以o2或NULL返回一个合理的近似值。返回值是“近似”,因为二进制浮点数是近似的;不可能在基数二中表示所有实数。此函数在传递两个整数时可返回浮点值。
- 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
置于其位置(对于o3,传递NULL会导致非法内存访问)。
- PyObject*
PyNumber_Lshift
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在成功时返回向左移位o1的结果o2,或者在失败时返回NULL。This is the equivalent of the Python expression
o1 << o2
.
- PyObject*
PyNumber_Rshift
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回成功时右移o1的结果为o2,或失败时返回NULL。这等同于Python表达式
o1 &gt;&gt; o2
。
- PyObject*
PyNumber_And
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回失败时成功和NULL的o1和o2的“按位和”这相当于Python表达式
o1 &amp; o2
。
- PyObject*
PyNumber_Xor
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
Returns the “bitwise exclusive or” of o1 by o2 on success, or NULL on failure. 这相当于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支持时,操作完成in-place。这相当于Python语句
o1 + = o2
。
- PyObject*
PyNumber_InPlaceSubtract
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回在故障时从o1中减去o2或NULL的结果。o1支持时,操作完成in-place。这等效于Python语句
o1 - = o2
。
- PyObject*
PyNumber_InPlaceMultiply
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回失败时乘以o1和o2或NULL的结果。o1支持时,操作完成in-place。这相当于Python语句
o1 * = o2
。
- PyObject*
PyNumber_InPlaceMatrixMultiply
(PyObject *o1, PyObject *o2)¶ 返回失败时o1和o2或NULL的矩阵乘法结果。o1支持时,操作完成in-place。这等效于Python语句
o1 @ = o2
。版本3.5中的新功能。
- PyObject*
PyNumber_InPlaceFloorDivide
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在失败时返回o1除以o2或NULL的数学下限。o1支持时,操作完成in-place。这相当于Python语句
o1 // = o2
。
- PyObject*
PyNumber_InPlaceTrueDivide
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在故障时为o1除以o2或NULL返回一个合理的近似值。返回值是“近似”,因为二进制浮点数是近似的;不可能在基数二中表示所有实数。此函数在传递两个整数时可返回浮点值。o1支持时,操作完成in-place。
- PyObject*
PyNumber_InPlaceRemainder
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在失败时返回o1除以o2或NULL的余数。o1支持时,操作完成in-place。这等效于Python语句
o1 %= o2
。
- PyObject*
PyNumber_InPlacePower
(PyObject *o1, PyObject *o2, PyObject *o3)¶ - 返回值:新引用。
参见内建函数
pow()
。失败时返回NULL。o1支持时,操作完成in-place。This is the equivalent of the Python statemento1 **= o2
when o3 isPy_None
, or an in-place variant ofpow(o1, o2, o3)
otherwise. 如果忽略o3,则将Py_None
置于其位置(对于o3,传递NULL会导致非法内存访问)。
- PyObject*
PyNumber_InPlaceLshift
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
在成功时返回向左移位o1的结果o2,或者在失败时返回NULL。o1支持时,操作完成in-place。This is the equivalent of the Python statement
o1 <<= o2
.
- PyObject*
PyNumber_InPlaceRshift
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回成功时右移o1的结果为o2,或失败时返回NULL。o1支持时,操作完成in-place。这等同于Python语句
o1 &gt;&gt; = o2
。
- PyObject*
PyNumber_InPlaceAnd
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
返回失败时成功和NULL的o1和o2的“按位和”o1支持时,操作完成in-place。这等效于Python语句
o1 &amp; = o2
。
- PyObject*
PyNumber_InPlaceXor
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
Returns the “bitwise exclusive or” of o1 by o2 on success, or NULL on failure. o1支持时,操作完成in-place。这相当于Python语句
o1 ^ = o2
。
- PyObject*
PyNumber_InPlaceOr
(PyObject *o1, PyObject *o2)¶ - 返回值:新引用。
成功时返回o1和o2的“按位或”,或者在失败时返回NULL。o1支持时,操作完成in-place。这等效于Python语句
o1 | = o2
。
- PyObject*
PyNumber_ToBase
(PyObject *n, int base)¶ 返回作为字符串转换为基础base的整数n。base参数必须为2,8,10或16之一。对于基址2,8或16,返回的字符串以
'0b'
,'0o'
或'0x'
如果n不是Python int,则首先使用PyNumber_Index()
进行转换。
- Py_ssize_t
PyNumber_AsSsize_t
(PyObject *o, PyObject *exc)¶ 如果o可以解释为整数,则返回o转换为Py_ssize_t值。如果调用失败,则会引发异常并返回-1。
如果o可以转换为Python int,但尝试转换为Py_ssize_t值将引发
OverflowError
,则exc将引发的异常类型(通常为IndexError
或OverflowError
)。如果exc是NULL,则清除异常,并将值剪裁为负整数或PY_SSIZE_T_MAX t3的PY_SSIZE_T_MIN >为正整数。