This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

# Номер протоколу

int `PyNumber_Check`(PyObject *o)

  Повертає `1`, якщо об’єкт o надає числові протоколи, і false в іншому випадку. Ця функція завжди успішна.

  Змінено в версії 3.8: Повертає `1`, якщо o є цілим індексом.

PyObject* `PyNumber_Add`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат додавання o1 і o2 або `NULL` у разі помилки. Це еквівалент виразу Python `o1 + o2`.

PyObject* `PyNumber_Subtract`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат віднімання o2 від o1 або `NULL` у разі помилки. Це еквівалент виразу Python `o1 - o2`.

PyObject* `PyNumber_Multiply`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат множення o1 і o2 або `NULL` у разі помилки. Це еквівалент виразу Python `o1 * o2`.

PyObject* `PyNumber_MatrixMultiply`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат множення матриці на o1 та o2 або `NULL` у разі помилки. Це еквівалент виразу Python `o1 @ o2`.

  Нове в версії 3.5.

PyObject* `PyNumber_FloorDivide`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає нижню частину o1, поділену на o2, або `NULL` у разі помилки. Це еквівалент виразу Python `o1 // o2`.

PyObject* `PyNumber_TrueDivide`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Return a reasonable approximation for the mathematical value of o1 divided by o2, or `NULL` on failure. The return value is «approximate» because binary floating point numbers are approximate; it is not possible to represent all real numbers in base two. This function can return a floating point value when passed two integers. This is the equivalent of the Python expression `o1 / o2`.

PyObject* `PyNumber_Remainder`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає залишок від ділення o1 на o2 або `NULL` у разі помилки. Це еквівалент виразу Python `o1 % o2`.

PyObject* `PyNumber_Divmod`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Перегляньте вбудовану функцію `divmod()`. Повертає `NULL` у разі помилки. Це еквівалент виразу Python `divmod(o1, o2)`.

PyObject* `PyNumber_Power`(PyObject *o1, PyObject *o2, PyObject *o3)
  Return value: New reference.

  Перегляньте вбудовану функцію `pow()`. Повертає `NULL` у разі помилки. Це еквівалент виразу Python `pow(o1, o2, o3)`, де o3 є необов’язковим. Якщо o3 потрібно ігнорувати, передайте замість нього `Py_None` (передача `NULL` для o3 призведе до незаконного доступу до пам’яті).

PyObject* `PyNumber_Negative`(PyObject *o)
  Return value: New reference.

  Повертає заперечення o у разі успіху або `NULL` у разі невдачі. Це еквівалент виразу Python `-o`.

PyObject* `PyNumber_Positive`(PyObject *o)
  Return value: New reference.

  Повертає o у разі успіху або `NULL` у разі невдачі. Це еквівалент виразу Python `+o`.

PyObject* `PyNumber_Absolute`(PyObject *o)
  Return value: New reference.

  Повертає абсолютне значення o або `NULL` у разі помилки. Це еквівалент виразу Python `abs(o)`.

PyObject* `PyNumber_Invert`(PyObject *o)
  Return value: New reference.

  Повертає порозрядне заперечення o у разі успіху або `NULL` у разі невдачі. Це еквівалент виразу Python `~o`.

PyObject* `PyNumber_Lshift`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат зсуву вліво o1 на o2 у разі успіху або `NULL` у разі помилки. Це еквівалент виразу Python `o1 << o2`.

PyObject* `PyNumber_Rshift`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат зсуву праворуч o1 на o2 у разі успіху або `NULL` у разі помилки. Це еквівалент виразу Python `o1 >> o2`.

PyObject* `PyNumber_And`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає «порозрядне та» o1 і o2 у разі успіху та `NULL` у разі помилки. Це еквівалент виразу Python `o1 & o2`.

PyObject* `PyNumber_Xor`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає «порозрядне виняткове або» o1 на o2 у разі успіху або `NULL` у разі помилки. Це еквівалент виразу Python `o1 ^ o2`.

PyObject* `PyNumber_Or`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає «порозрядне або» o1 і o2 у разі успіху або `NULL` у разі помилки. Це еквівалент виразу Python `o1 | o2`.

PyObject* `PyNumber_InPlaceAdd`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат додавання o1 і o2 або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 += o2`.

PyObject* `PyNumber_InPlaceSubtract`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат віднімання o2 від o1 або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 -= o2`.

PyObject* `PyNumber_InPlaceMultiply`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат множення o1 і o2 або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 *= o2`.

PyObject* `PyNumber_InPlaceMatrixMultiply`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат множення матриці на o1 і o2 або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 @= o2`.

  Нове в версії 3.5.

PyObject* `PyNumber_InPlaceFloorDivide`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає математичний рівень ділення o1 на o2 або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 //= o2`.

PyObject* `PyNumber_InPlaceTrueDivide`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Return a reasonable approximation for the mathematical value of o1 divided by o2, or `NULL` on failure. The return value is «approximate» because binary floating point numbers are approximate; it is not possible to represent all real numbers in base two. This function can return a floating point value when passed two integers. The operation is done in-place when o1 supports it. This is the equivalent of the Python statement `o1 /= o2`.

PyObject* `PyNumber_InPlaceRemainder`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає залишок від ділення o1 на o2 або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 %= o2`.

PyObject* `PyNumber_InPlacePower`(PyObject *o1, PyObject *o2, PyObject *o3)
  Return value: New reference.

  Перегляньте вбудовану функцію `pow()`. Повертає `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 **= o2`, коли o3 дорівнює `Py_None`, або альтернативного варіанту `pow(o1, o2, o3)` інакше. Якщо o3 потрібно ігнорувати, передайте замість нього `Py_None` (передача `NULL` для o3 призведе до незаконного доступу до пам’яті).

PyObject* `PyNumber_InPlaceLshift`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат зсуву ліворуч o1 на o2 у разі успіху або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 <<= o2`.

PyObject* `PyNumber_InPlaceRshift`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає результат зсуву праворуч o1 на o2 у разі успіху або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 >>= o2`.

PyObject* `PyNumber_InPlaceAnd`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає «порозрядне та» o1 і o2 у разі успіху та `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 &= o2`.

PyObject* `PyNumber_InPlaceXor`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає «порозрядне виняткове або» o1 на o2 у разі успіху або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 ^= o2`.

PyObject* `PyNumber_InPlaceOr`(PyObject *o1, PyObject *o2)
  Return value: New reference.

  Повертає «порозрядне або» o1 і o2 у разі успіху або `NULL` у разі помилки. Операція виконується на місці, якщо o1 її підтримує. Це еквівалент оператора Python `o1 |= o2`.

PyObject* `PyNumber_Long`(PyObject *o)
  Return value: New reference.

  Повертає o, перетворений на цілий об’єкт у разі успіху, або `NULL` у разі помилки. Це еквівалент виразу Python `int(o)`.

PyObject* `PyNumber_Float`(PyObject *o)
  Return value: New reference.

  Повертає o, перетворений на об’єкт float у разі успіху, або `NULL` у разі помилки. Це еквівалент виразу Python `float(o)`.

PyObject* `PyNumber_Index`(PyObject *o)
  Return value: New reference.

  Повертає o, перетворений на Python int у разі успіху або `NULL` з виключенням `TypeError`, яке виникає в разі помилки.

PyObject* `PyNumber_ToBase`(PyObject *n, int base)
  Return value: New reference.

  Повертає ціле число n, перетворене на базу base як рядок. Аргумент base має бути одним із 2, 8, 10 або 16. Для base 2, 8 або 16 повернутий рядок має префікс базового маркера `'0b'`, `'0o'` або `'0x''` відповідно. Якщо n не є int Python, воно спочатку перетворюється за допомогою `PyNumber_Index()`.

Py_ssize_t `PyNumber_AsSsize_t`(PyObject *o, PyObject *exc)

  Повертає o, перетворене на значення `Py_ssize_t`, якщо o можна інтерпретувати як ціле число. Якщо виклик не вдається, виникає виняток і повертається `-1`.

  Якщо o можна перетворити на Python int, але спроба перетворити на значення `Py_ssize_t` призведе до появи `OverflowError`, тоді аргумент exc є типом винятку, який викличе бути викликано (зазвичай `IndexError` або `OverflowError`). Якщо exc дорівнює `NULL`, тоді виняток очищається, а значення обрізається до `PY_SSIZE_T_MIN` для від’ємного цілого числа або `PY_SSIZE_T_MAX` для додатного цілого числа.

int `PyIndex_Check`(PyObject *o)

  Повертає `1`, якщо o є цілим індексом (має заповнений слот `nb_index` структури `tp_as_number`), і `0` інакше. Ця функція завжди успішна.