##
7.2.1 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 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).