數字協議

int PyNumber_Check(PyObject *o)
作為 穩定 ABI 的一部分。

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

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

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

返回 o1o2 相加的結果,失敗時返回 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 的一部分。

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

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

返回 o1o2 矩陣相乘的結果,失敗時返回 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。此函式總是成功。