Plain Integer Objects — Python 2.7.18 documentation

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.

# Plain Integer Objects

`PyIntObject`

  This subtype of `PyObject` represents a Python integer object.

PyTypeObject `PyInt_Type`

  This instance of `PyTypeObject` represents the Python plain integer type. This is the same object as `int` and `types.IntType`.

int `PyInt_Check`(PyObject *o)

  Return true if o is of type `PyInt_Type` or a subtype of `PyInt_Type`.

  Changed in version 2.2: Allowed subtypes to be accepted.

int `PyInt_CheckExact`(PyObject *o)

  Return true if o is of type `PyInt_Type`, but not a subtype of `PyInt_Type`.

  New in version 2.2.

PyObject* `PyInt_FromString`(char *str, char **pend, int base)
  Return value: New reference.

  Return a new `PyIntObject` or `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`, the radix will be determined based on the leading characters of str: if str starts with `'0x'` or `'0X'`, radix 16 will be used; if str starts with `'0'`, radix 8 will be used; otherwise radix 10 will be used. If base is not `0`, it must be between `2` and `36`, inclusive. Leading spaces are ignored. If there are no digits, `ValueError` will be raised. If the string represents a number too large to be contained within the machine’s `long int` type and overflow warnings are being suppressed, a `PyLongObject` will be returned. If overflow warnings are not being suppressed, NULL will be returned in this case.

PyObject* `PyInt_FromLong`(long ival)
  Return value: New reference.

  Create a new integer object with a value of ival.

  The current implementation keeps an array of integer objects for all integers between `-5` and `256`, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of `1`. I suspect the behaviour of Python in this case is undefined. :-)

PyObject* `PyInt_FromSsize_t`(Py_ssize_t ival)
  Return value: New reference.

  Create a new integer object with a value of ival. If the value is larger than `LONG_MAX` or smaller than `LONG_MIN`, a long integer object is returned.

  New in version 2.5.

PyObject* `PyInt_FromSize_t`(size_t ival)

  Create a new integer object with a value of ival. If the value exceeds `LONG_MAX`, a long integer object is returned.

  New in version 2.5.

long `PyInt_AsLong`(PyObject *io)

  Will first attempt to cast the object to a `PyIntObject`, if it is not already one, and then return its value. If there is an error, `-1` is returned, and the caller should check `PyErr_Occurred()` to find out whether there was an error, or whether the value just happened to be `-1`.

long `PyInt_AS_LONG`(PyObject *io)

  Return the value of the object io. No error checking is performed.

unsigned long `PyInt_AsUnsignedLongMask`(PyObject *io)

  Will first attempt to cast the object to a `PyIntObject` or `PyLongObject`, if it is not already one, and then return its value as unsigned long. This function does not check for overflow.

  New in version 2.3.

unsigned PY_LONG_LONG `PyInt_AsUnsignedLongLongMask`(PyObject *io)

  Will first attempt to cast the object to a `PyIntObject` or `PyLongObject`, if it is not already one, and then return its value as unsigned long long, without checking for overflow.

  New in version 2.3.

Py_ssize_t `PyInt_AsSsize_t`(PyObject *io)

  Will first attempt to cast the object to a `PyIntObject` or `PyLongObject`, if it is not already one, and then return its value as `Py_ssize_t`.

  New in version 2.5.

long `PyInt_GetMax`()

  Return the system’s idea of the largest integer it can handle (`LONG_MAX`, as defined in the system header files).

int `PyInt_ClearFreeList`()

  Clear the integer free list. Return the number of items that could not be freed.

  New in version 2.6.