Giao thức số

int PyNumber_Check(PyObject *o)
Một phần của ABI ổn định.

Trả về 1 nếu đối tượng o cung cấp giao thức số và ngược lại là false. Chức năng này luôn thành công.

Thay đổi trong phiên bản 3.8: Trả về 1 nếu o là số nguyên chỉ mục.

PyObject *PyNumber_Add(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả của việc thêm o1o2 hoặc NULL khi không thành công. Điều này tương đương với biểu thức Python o1 + o2.

PyObject *PyNumber_Subtract(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả trừ o2 từ o1 hoặc NULL khi thất bại. Điều này tương đương với biểu thức Python o1 - o2.

PyObject *PyNumber_Multiply(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả của phép nhân o1o2 hoặc NULL khi nhân không thành công. Điều này tương đương với biểu thức Python o1 * o2.

PyObject *PyNumber_MatrixMultiply(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định kể từ phiên bản 3.7.

Trả về kết quả của phép nhân ma trận trên o1o2 hoặc NULL khi thất bại. Điều này tương đương với biểu thức Python o1 @ o2.

Added in version 3.5.

PyObject *PyNumber_FloorDivide(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về sàn của o1 chia cho o2 hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python o1 // o2.

PyObject *PyNumber_TrueDivide(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về giá trị gần đúng hợp lý cho giá trị toán học của o1 chia cho o2 hoặc NULL khi thất bại. Giá trị trả về là "gần đúng" vì các số dấu phẩy động nhị phân là gần đúng; không thể biểu diễn tất cả các số thực trong cơ số hai. Hàm này có thể trả về giá trị dấu phẩy động khi truyền hai số nguyên. Điều này tương đương với biểu thức Python o1 / o2.

PyObject *PyNumber_Remainder(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về phần còn lại của phép chia o1 cho o2 hoặc NULL khi chia không thành công. Điều này tương đương với biểu thức Python o1 % o2.

PyObject *PyNumber_Divmod(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Xem chức năng tích hợp divmod(). Trả về NULL khi thất bại. Điều này tương đương với biểu thức Python divmod(o1, o2).

PyObject *PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Xem chức năng tích hợp pow(). Trả về NULL khi thất bại. Điều này tương đương với biểu thức pow(o1, o2, o3) trong Python, trong đó o3 là tùy chọn. Nếu o3 bị bỏ qua, hãy chuyển Py_None vào vị trí của nó (chuyển NULL cho o3 sẽ gây ra truy cập bộ nhớ bất hợp pháp).

PyObject *PyNumber_Negative(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về giá trị phủ định của o nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python -o.

PyObject *PyNumber_Positive(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về o nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python +o.

PyObject *PyNumber_Absolute(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về giá trị tuyệt đối của o hoặc NULL khi thất bại. Điều này tương đương với biểu thức Python abs(o).

PyObject *PyNumber_Invert(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về giá trị phủ định theo bit của o khi thành công hoặc NULL khi thất bại. Điều này tương đương với biểu thức Python ~o.

PyObject *PyNumber_Lshift(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả dịch chuyển trái o1 theo o2 nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python o1 << o2.

PyObject *PyNumber_Rshift(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả của việc dịch chuyển sang phải o1 theo o2 nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python o1 >> o2.

PyObject *PyNumber_And(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về "bitwise và" của o1o2 nếu thành công và NULL nếu thất bại. Điều này tương đương với biểu thức Python o1 & o2.

PyObject *PyNumber_Xor(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về "độc quyền bit hoặc" của o1 bởi o2 khi thành công hoặc NULL khi thất bại. Điều này tương đương với biểu thức Python o1 ^ o2.

PyObject *PyNumber_Or(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về "bitwise hoặc" của o1o2 nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python o1 | o2.

PyObject *PyNumber_InPlaceAdd(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả của việc thêm o1o2 hoặc NULL khi không thành công. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 += o2.

PyObject *PyNumber_InPlaceSubtract(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả trừ o2 từ o1 hoặc NULL khi thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 -= o2.

PyObject *PyNumber_InPlaceMultiply(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả của phép nhân o1o2 hoặc NULL khi nhân không thành công. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 *= o2.

PyObject *PyNumber_InPlaceMatrixMultiply(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định kể từ phiên bản 3.7.

Trả về kết quả của phép nhân ma trận trên o1o2 hoặc NULL khi thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 @= o2.

Added in version 3.5.

PyObject *PyNumber_InPlaceFloorDivide(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về tầng toán học của việc chia o1 cho o2 hoặc NULL khi chia không thành công. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 //= o2.

PyObject *PyNumber_InPlaceTrueDivide(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về giá trị gần đúng hợp lý cho giá trị toán học của o1 chia cho o2 hoặc NULL khi thất bại. Giá trị trả về là "gần đúng" vì các số dấu phẩy động nhị phân là gần đúng; không thể biểu diễn tất cả các số thực trong cơ số hai. Hàm này có thể trả về giá trị dấu phẩy động khi truyền hai số nguyên. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 /= o2.

PyObject *PyNumber_InPlaceRemainder(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về phần còn lại của phép chia o1 cho o2 hoặc NULL khi chia không thành công. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 %= o2.

PyObject *PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Xem chức năng tích hợp pow(). Trả về NULL khi thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 **= o2 khi o3 là ​​:c:data:Py_None hoặc một biến thể tại chỗ của pow(o1, o2, o3) nếu không. Nếu o3 bị bỏ qua, hãy chuyển Py_None vào vị trí của nó (chuyển NULL cho o3 sẽ gây ra truy cập bộ nhớ bất hợp pháp).

PyObject *PyNumber_InPlaceLshift(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả dịch chuyển trái o1 theo o2 nếu thành công hoặc NULL nếu thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 <<= o2.

PyObject *PyNumber_InPlaceRshift(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về kết quả của việc dịch chuyển sang phải o1 theo o2 nếu thành công hoặc NULL nếu thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 >>= o2.

PyObject *PyNumber_InPlaceAnd(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về "bitwise và" của o1o2 nếu thành công và NULL nếu thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 &= o2.

PyObject *PyNumber_InPlaceXor(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về "độc quyền bit hoặc" của o1 bởi o2 khi thành công hoặc NULL khi thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 ^= o2.

PyObject *PyNumber_InPlaceOr(PyObject *o1, PyObject *o2)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về "bitwise hoặc" của o1o2 nếu thành công hoặc NULL nếu thất bại. Thao tác được thực hiện in-place khi o1 hỗ trợ nó. Điều này tương đương với câu lệnh Python o1 |= o2.

PyObject *PyNumber_Long(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về o được chuyển đổi thành đối tượng số nguyên nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python int(o).

PyObject *PyNumber_Float(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về o được chuyển đổi thành đối tượng float nếu thành công hoặc NULL nếu thất bại. Điều này tương đương với biểu thức Python float(o).

PyObject *PyNumber_Index(PyObject *o)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về o được chuyển đổi thành int Python khi thành công hoặc NULL với ngoại lệ TypeError được đưa ra khi thất bại.

Thay đổi trong phiên bản 3.10: Kết quả luôn có loại int chính xác. Trước đây, kết quả có thể là một phiên bản của lớp con của int.

PyObject *PyNumber_ToBase(PyObject *n, int base)
Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định.

Trả về số nguyên n được chuyển đổi thành base cơ sở dưới dạng chuỗi. Đối số base phải là một trong 2, 8, 10 hoặc 16. Đối với cơ sở 2, 8 hoặc 16, chuỗi trả về có tiền tố là dấu cơ sở lần lượt là '0b', '0o' hoặc '0x'. Nếu n không phải là int Python, trước tiên nó sẽ được chuyển đổi bằng PyNumber_Index().

Py_ssize_t PyNumber_AsSsize_t(PyObject *o, PyObject *exc)
Một phần của ABI ổn định.

Trả về o được chuyển đổi thành giá trị Py_ssize_t nếu o có thể được hiểu là số nguyên. Nếu cuộc gọi không thành công, một ngoại lệ sẽ xuất hiện và -1 được trả về.

Nếu o có thể được chuyển đổi thành Python int nhưng nỗ lực chuyển đổi thành giá trị Py_ssize_t sẽ tạo ra OverflowError, thì đối số exc là loại ngoại lệ sẽ được nâng lên (thường là IndexError hoặc OverflowError). Nếu excNULL thì ngoại lệ sẽ bị xóa và giá trị được cắt bớt thành PY_SSIZE_T_MIN cho số nguyên âm hoặc PY_SSIZE_T_MAX cho số nguyên dương.

int PyIndex_Check(PyObject *o)
Một phần của ABI ổn định kể từ phiên bản 3.8.

Trả về 1 nếu o là số nguyên chỉ mục (có vị trí nb_index của cấu trúc tp_as_number được điền vào) và 0 nếu không. Chức năng này luôn thành công.