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` інакше. Ця функція завжди успішна.