# Цілі об’єкти

Усі цілі числа реалізуються як «довгі» цілі об’єкти довільного розміру.

У разі помилки більшість API `PyLong_As*` повертають `(тип повернення)-1`, який неможливо відрізнити від числа. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

type PyLongObject
  Part of the Limited API (as an opaque struct).

  Цей підтип `PyObject` представляє цілочисельний об’єкт Python.

PyTypeObject PyLong_Type
  Part of the Stable ABI.

  Цей екземпляр `PyTypeObject` представляє цілочисельний тип Python. Це той самий об’єкт, що й `int` на рівні Python.

int PyLong_Check(PyObject *p)

  Повертає true, якщо його аргумент є `PyLongObject` або підтипом `PyLongObject`. Ця функція завжди успішна.

int PyLong_CheckExact(PyObject *p)

  Повертає true, якщо його аргумент є `PyLongObject`, але не підтипом `PyLongObject`. Ця функція завжди успішна.

PyObject *PyLong_FromLong(long v)
  Return value: New reference. Part of the Stable ABI.

  Повертає новий об’єкт `PyLongObject` з v або `NULL` у разі помилки.

  Поточна реалізація зберігає масив цілих об’єктів для всіх цілих чисел від `-5` до `256`. Коли ви створюєте int у цьому діапазоні, ви фактично повертаєте посилання на існуючий об’єкт.

PyObject *PyLong_FromUnsignedLong(unsigned long v)
  Return value: New reference. Part of the Stable ABI.

  Return a new `PyLongObject` object from a C unsigned long, or `NULL` on failure.

PyObject *PyLong_FromSsize_t(Py_ssize_t v)
  Return value: New reference. Part of the Stable ABI.

  Повертає новий об’єкт `PyLongObject` із C `Py_ssize_t` або `NULL` у разі помилки.

PyObject *PyLong_FromSize_t(size_t v)
  Return value: New reference. Part of the Stable ABI.

  Повертає новий об’єкт `PyLongObject` із C `size_t` або `NULL` у разі помилки.

PyObject *PyLong_FromLongLong(long long v)
  Return value: New reference. Part of the Stable ABI.

  Return a new `PyLongObject` object from a C long long, or `NULL` on failure.

PyObject *PyLong_FromUnsignedLongLong(unsigned long long v)
  Return value: New reference. Part of the Stable ABI.

  Return a new `PyLongObject` object from a C unsigned long long, or `NULL` on failure.

PyObject *PyLong_FromDouble(double v)
  Return value: New reference. Part of the Stable ABI.

  Повертає новий об’єкт `PyLongObject` із цілої частини v або `NULL` у разі помилки.

PyObject *PyLong_FromString(const char *str, char **pend, int base)
  Return value: New reference. Part of the Stable ABI.

  Return a new `PyLongObject` based on the string value in str, which is interpreted according to the radix in base. If pend is non-`NULL`, *pend will point to the first character in str which follows the representation of the number. If base is `0`, str is interpreted using the Цілі літерали definition; in this case, leading zeros in a non-zero decimal number raises a `ValueError`. If base is not `0`, it must be between `2` and `36`, inclusive. Leading spaces and single underscores after a base specifier and between digits are ignored. If there are no digits, `ValueError` will be raised.

  Дивись також

  Python methods `int.to_bytes()` and `int.from_bytes()` to convert a `PyLongObject` to/from an array of bytes in base `256`. You can call those from C using `PyObject_CallMethod()`.

PyObject *PyLong_FromUnicodeObject(PyObject *u, int base)
  Return value: New reference.

  Перетворіть послідовність цифр Unicode у рядку u на ціле число Python.

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

PyObject *PyLong_FromVoidPtr(void *p)
  Return value: New reference. Part of the Stable ABI.

  Створіть ціле число Python із покажчика p. Значення вказівника можна отримати з результуючого значення за допомогою `PyLong_AsVoidPtr()`.

long PyLong_AsLong(PyObject *obj)
  Part of the Stable ABI.

  Return a C long representation of obj. If obj is not an instance of `PyLongObject`, first call its `__index__()` method (if present) to convert it to a `PyLongObject`.

  Raise `OverflowError` if the value of obj is out of range for a long.

  Повертає `-1` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

  Змінено в версії 3.8: Use `__index__()` if available.

  Змінено в версії 3.10: This function will no longer use `__int__()`.

long PyLong_AsLongAndOverflow(PyObject *obj, int *overflow)
  Part of the Stable ABI.

  Return a C long representation of obj. If obj is not an instance of `PyLongObject`, first call its `__index__()` method (if present) to convert it to a `PyLongObject`.

  If the value of obj is greater than `LONG_MAX` or less than `LONG_MIN`, set *overflow to `1` or `-1`, respectively, and return `-1`; otherwise, set *overflow to `0`. If any other exception occurs set *overflow to `0` and return `-1` as usual.

  Повертає `-1` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

  Змінено в версії 3.8: Use `__index__()` if available.

  Змінено в версії 3.10: This function will no longer use `__int__()`.

long long PyLong_AsLongLong(PyObject *obj)
  Part of the Stable ABI.

  Return a C long long representation of obj. If obj is not an instance of `PyLongObject`, first call its `__index__()` method (if present) to convert it to a `PyLongObject`.

  Raise `OverflowError` if the value of obj is out of range for a long long.

  Повертає `-1` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

  Змінено в версії 3.8: Use `__index__()` if available.

  Змінено в версії 3.10: This function will no longer use `__int__()`.

long long PyLong_AsLongLongAndOverflow(PyObject *obj, int *overflow)
  Part of the Stable ABI.

  Return a C long long representation of obj. If obj is not an instance of `PyLongObject`, first call its `__index__()` method (if present) to convert it to a `PyLongObject`.

  If the value of obj is greater than `LLONG_MAX` or less than `LLONG_MIN`, set *overflow to `1` or `-1`, respectively, and return `-1`; otherwise, set *overflow to `0`. If any other exception occurs set *overflow to `0` and return `-1` as usual.

  Повертає `-1` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

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

  Змінено в версії 3.8: Use `__index__()` if available.

  Змінено в версії 3.10: This function will no longer use `__int__()`.

Py_ssize_t PyLong_AsSsize_t(PyObject *pylong)
  Part of the Stable ABI.

  Повертає C `Py_ssize_t` представлення pylong. pylong має бути екземпляром `PyLongObject`.

  Викликайте `OverflowError`, якщо значення pylong виходить за межі діапазону для `Py_ssize_t`.

  Повертає `-1` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

unsigned long PyLong_AsUnsignedLong(PyObject *pylong)
  Part of the Stable ABI.

  Return a C unsigned long representation of pylong. pylong must be an instance of `PyLongObject`.

  Raise `OverflowError` if the value of pylong is out of range for a unsigned long.

  У разі помилки повертає `(unsigned long)-1`. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

size_t PyLong_AsSize_t(PyObject *pylong)
  Part of the Stable ABI.

  Повертає C `size_t` представлення pylong. pylong має бути екземпляром `PyLongObject`.

  Викликайте `OverflowError`, якщо значення pylong виходить за межі діапазону для `size_t`.

  Повертає `(size_t)-1` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

unsigned long long PyLong_AsUnsignedLongLong(PyObject *pylong)
  Part of the Stable ABI.

  Return a C unsigned long long representation of pylong. pylong must be an instance of `PyLongObject`.

  Raise `OverflowError` if the value of pylong is out of range for an unsigned long long.

  У разі помилки повертає `(unsigned long long)-1`. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

  Змінено в версії 3.1: Негативний pylong тепер викликає `OverflowError`, а не `TypeError`.

unsigned long PyLong_AsUnsignedLongMask(PyObject *obj)
  Part of the Stable ABI.

  Return a C unsigned long representation of obj. If obj is not an instance of `PyLongObject`, first call its `__index__()` method (if present) to convert it to a `PyLongObject`.

  If the value of obj is out of range for an unsigned long, return the reduction of that value modulo `ULONG_MAX + 1`.

  У разі помилки повертає `(unsigned long)-1`. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

  Змінено в версії 3.8: Use `__index__()` if available.

  Змінено в версії 3.10: This function will no longer use `__int__()`.

unsigned long long PyLong_AsUnsignedLongLongMask(PyObject *obj)
  Part of the Stable ABI.

  Return a C unsigned long long representation of obj. If obj is not an instance of `PyLongObject`, first call its `__index__()` method (if present) to convert it to a `PyLongObject`.

  If the value of obj is out of range for an unsigned long long, return the reduction of that value modulo `ULLONG_MAX + 1`.

  У разі помилки повертає `(unsigned long long)-1`. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

  Змінено в версії 3.8: Use `__index__()` if available.

  Змінено в версії 3.10: This function will no longer use `__int__()`.

double PyLong_AsDouble(PyObject *pylong)
  Part of the Stable ABI.

  Return a C double representation of pylong. pylong must be an instance of `PyLongObject`.

  Raise `OverflowError` if the value of pylong is out of range for a double.

  Повертає `-1.0` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.

void *PyLong_AsVoidPtr(PyObject *pylong)
  Part of the Stable ABI.

  Convert a Python integer pylong to a C void pointer. If pylong cannot be converted, an `OverflowError` will be raised. This is only assured to produce a usable void pointer for values created with `PyLong_FromVoidPtr()`.

  Повертає `NULL` у разі помилки. Використовуйте `PyErr_Occurred()` для усунення неоднозначності.