數字協議

int PyNumber_Check(PyObject *o)
屬於穩定 ABI的一部分。

如果物件 *o* 提供了數字協議,則返回 1,否則返回 false。此函式總是成功。

在 3.8 版本中變更: 如果 *o* 是索引整數,則返回 1

PyObject *PyNumber_Add(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 *o1* 和 *o2* 相加的結果,失敗時返回 NULL。這等價於 Python 表示式 o1 + o2

PyObject *PyNumber_Subtract(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 *o1* 減去 *o2* 的結果,失敗時返回 NULL。這等價於 Python 表示式 o1 - o2

PyObject *PyNumber_Multiply(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 *o1* 和 *o2* 相乘的結果,失敗時返回 NULL。這等價於 Python 表示式 o1 * o2

PyObject *PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2)
返回值:新的引用。自 3.7 版本起,屬於穩定 ABI的一部分。

返回 *o1* 和 *o2* 的矩陣乘法結果,失敗時返回 NULL。這等價於 Python 表示式 o1 @ o2

在 3.5 版本中加入。

PyObject *PyNumber_FloorDivide(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 *o1* 除以 *o2* 的向下取整結果,失敗時返回 NULL。這等價於 Python 表示式 o1 // o2

PyObject *PyNumber_TrueDivide(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 *o1* 除以 *o2* 的數學值的合理近似值,失敗時返回 NULL。返回值是“近似的”,因為二進位制浮點數是近似的;不可能用二進位制表示所有實數。當傳入兩個整數時,此函式可以返回一個浮點數值。這等價於 Python 表示式 o1 / o2

PyObject *PyNumber_Remainder(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 *o1* 除以 *o2* 的餘數,失敗時返回 NULL。這等價於 Python 表示式 o1 % o2

PyObject *PyNumber_Divmod(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

請參閱內建函式 divmod()。失敗時返回 NULL。這等價於 Python 表示式 divmod(o1, o2)

PyObject *PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)
返回值:新的引用。屬於穩定 ABI的一部分。

請參閱內建函式 pow()。失敗時返回 NULL。 這等效於 Python 表示式 pow(o1, o2, o3),其中 o3 是可選的。如果要忽略 o3,請傳遞 Py_None 代替(為 o3 傳遞 NULL 會導致非法記憶體訪問)。

PyObject *PyNumber_Negative(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o 的負值,失敗時返回 NULL。這等效於 Python 表示式 -o

PyObject *PyNumber_Positive(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o,失敗時返回 NULL。這等效於 Python 表示式 +o

PyObject *PyNumber_Absolute(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o 的絕對值,失敗時返回 NULL。這等效於 Python 表示式 abs(o)

PyObject *PyNumber_Invert(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o 的按位取反值,失敗時返回 NULL。這等效於 Python 表示式 ~o

PyObject *PyNumber_Lshift(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回將 o1 左移 o2 的結果,失敗時返回 NULL。這等效於 Python 表示式 o1 << o2

PyObject *PyNumber_Rshift(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回將 o1 右移 o2 的結果,失敗時返回 NULL。這等效於 Python 表示式 o1 >> o2

PyObject *PyNumber_And(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o1o2 的“按位與”結果,失敗時返回 NULL。這等效於 Python 表示式 o1 & o2

PyObject *PyNumber_Xor(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o1o2 的“按位異或”結果,失敗時返回 NULL。這等效於 Python 表示式 o1 ^ o2

PyObject *PyNumber_Or(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o1o2 的“按位或”結果,失敗時返回 NULL。這等效於 Python 表示式 o1 | o2

PyObject *PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o1o2 相加的結果,失敗時返回 NULL。當 o1 支援時,該操作是就地完成的。這等效於 Python 語句 o1 += o2

PyObject *PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o1 減去 o2 的結果,失敗時返回 NULL。當 o1 支援時,該操作是就地完成的。這等效於 Python 語句 o1 -= o2

PyObject *PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o1o2 相乘的結果,或者在失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 *= o2

PyObject *PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2)
返回值:新的引用。自 3.7 版本起,屬於穩定 ABI的一部分。

返回 o1o2 矩陣相乘的結果,或者在失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 @= o2

在 3.5 版本中加入。

PyObject *PyNumber_InPlaceFloorDivide(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o1 除以 o2 的數學向下取整結果,或者在失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 //= o2

PyObject *PyNumber_InPlaceTrueDivide(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o1 除以 o2 的數學值的合理近似值,或者在失敗時返回 NULL。返回值是“近似值”,因為二進位制浮點數是近似值;不可能用二進位制表示所有實數。當傳遞兩個整數時,此函式可以返回一個浮點值。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 /= o2

PyObject *PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

返回 o1 除以 o2 的餘數,或者在失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 %= o2

PyObject *PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3)
返回值:新的引用。屬於穩定 ABI的一部分。

請參閱內建函式 pow()。失敗時返回 NULL。當 o1 支援時,該操作會就地執行。當 o3 為 Py_None 時,這等同於 Python 語句 o1 **= o2,否則等同於 pow(o1, o2, o3) 的就地變體。如果要忽略 o3,請在其位置傳遞 Py_None(為 o3 傳遞 NULL 將導致非法記憶體訪問)。

PyObject *PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回將 o1 左移 o2 的結果,或者在失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 <<= o2

PyObject *PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回將 o1 右移 o2 的結果,或者在失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 >>= o2

PyObject *PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o1o2 的“按位與”結果,失敗時返回 NULL。當 o1 支援時,該操作會就地執行。這等同於 Python 語句 o1 &= o2

PyObject *PyNumber_InPlaceXor(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o1o2 的“按位異或”結果,失敗時返回 NULL。當 o1 支援時,此操作是原地進行的。這等效於 Python 語句 o1 ^= o2

PyObject *PyNumber_InPlaceOr(PyObject *o1, PyObject *o2)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回 o1o2 的“按位或”結果,失敗時返回 NULL。當 o1 支援時,此操作是原地進行的。這等效於 Python 語句 o1 |= o2

PyObject *PyNumber_Long(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回轉換為整數物件的 o,失敗時返回 NULL。這等效於 Python 表示式 int(o)

PyObject *PyNumber_Float(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回轉換為浮點數物件的 o,失敗時返回 NULL。這等效於 Python 表示式 float(o)

PyObject *PyNumber_Index(PyObject *o)
返回值:新的引用。屬於穩定 ABI的一部分。

成功時返回轉換為 Python int 的 o,失敗時返回 NULL 並引發 TypeError 異常。

在 3.10 版本中更改: 結果始終具有精確的型別 int。以前,結果可能是 int 的子類的例項。

PyObject *PyNumber_ToBase(PyObject *n, int base)
返回值:新的引用。屬於穩定 ABI的一部分。

將整數 n 轉換為以 base 為底的字串並返回。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)
屬於穩定 ABI的一部分。

如果 o 可以被解釋為整數,則返回轉換為 Py_ssize_t 值的結果。如果呼叫失敗,則引發異常並返回 -1

如果 o 可以轉換為 Python int,但嘗試轉換為 Py_ssize_t 值將引發 OverflowError,則 exc 引數將是要引發的異常的型別(通常為 IndexErrorOverflowError)。如果 excNULL,則會清除異常,並將該值剪下為負整數的 PY_SSIZE_T_MIN 或正整數的 PY_SSIZE_T_MAX

int PyIndex_Check(PyObject *o)
自 3.8 版本以來,屬於 穩定的 ABI

如果 o 是索引整數(在 tp_as_number 結構的 nb_index 插槽中填充了值),則返回 1,否則返回 0。此函式始終成功。