數字協議¶
-
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的一部分。
成功時返回 o1 和 o2 的“按位與”結果,失敗時返回
NULL
。這等效於 Python 表示式o1 & o2
。
-
PyObject *PyNumber_Xor(PyObject *o1, PyObject *o2)¶
- 返回值:新的引用。屬於穩定 ABI的一部分。
成功時返回 o1 和 o2 的“按位異或”結果,失敗時返回
NULL
。這等效於 Python 表示式o1 ^ o2
。
-
PyObject *PyNumber_Or(PyObject *o1, PyObject *o2)¶
- 返回值:新的引用。屬於穩定 ABI的一部分。
成功時返回 o1 和 o2 的“按位或”結果,失敗時返回
NULL
。這等效於 Python 表示式o1 | o2
。
-
PyObject *PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)¶
- 返回值:新的引用。屬於穩定 ABI的一部分。
返回 o1 和 o2 相加的結果,失敗時返回
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的一部分。
返回 o1 和 o2 相乘的結果,或者在失敗時返回
NULL
。當 o1 支援時,該操作會就地執行。這等同於 Python 語句o1 *= o2
。
-
PyObject *PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2)¶
- 返回值:新的引用。自 3.7 版本起,屬於穩定 ABI的一部分。
返回 o1 和 o2 矩陣相乘的結果,或者在失敗時返回
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的一部分。
成功時返回 o1 和 o2 的“按位與”結果,失敗時返回
NULL
。當 o1 支援時,該操作會就地執行。這等同於 Python 語句o1 &= o2
。
-
PyObject *PyNumber_InPlaceXor(PyObject *o1, PyObject *o2)¶
- 返回值:新的引用。屬於穩定 ABI的一部分。
成功時返回 o1 和 o2 的“按位異或”結果,失敗時返回
NULL
。當 o1 支援時,此操作是原地進行的。這等效於 Python 語句o1 ^= o2
。
-
PyObject *PyNumber_InPlaceOr(PyObject *o1, PyObject *o2)¶
- 返回值:新的引用。屬於穩定 ABI的一部分。
成功時返回 o1 和 o2 的“按位或”結果,失敗時返回
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 引數將是要引發的異常的型別(通常為IndexError
或OverflowError
)。如果 exc 為NULL
,則會清除異常,並將該值剪下為負整數的PY_SSIZE_T_MIN
或正整數的PY_SSIZE_T_MAX
。