Integer Objects

All integers are implemented as “long” integer objects of arbitrary size.

On error, mostPyLong_As* APIs return(returntype)-1 which cannot bedistinguished from a number. UsePyErr_Occurred() to disambiguate.

typePyLongObject
Part of theLimited API (as an opaque struct).

This subtype ofPyObject represents a Python integer object.

PyTypeObjectPyLong_Type
Part of theStable ABI.

This instance ofPyTypeObject represents the Python integer type.This is the same object asint in the Python layer.

intPyLong_Check(PyObject*p)

Return true if its argument is aPyLongObject or a subtype ofPyLongObject. This function always succeeds.

intPyLong_CheckExact(PyObject*p)

Return true if its argument is aPyLongObject, but not a subtype ofPyLongObject. This function always succeeds.

PyObject*PyLong_FromLong(longv)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object fromv, orNULL on failure.

The current implementation keeps an array of integer objects for all integersbetween-5 and256. When you create an int in that range you actuallyjust get back a reference to the existing object.

PyObject*PyLong_FromUnsignedLong(unsignedlongv)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object from a Cunsignedlong, orNULL on failure.

PyObject*PyLong_FromSsize_t(Py_ssize_tv)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object from a CPy_ssize_t, orNULL on failure.

PyObject*PyLong_FromSize_t(size_tv)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object from a Csize_t, orNULL on failure.

PyObject*PyLong_FromLongLong(longlongv)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object from a Clonglong, orNULLon failure.

PyObject*PyLong_FromUnsignedLongLong(unsignedlonglongv)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object from a Cunsignedlonglong,orNULL on failure.

PyObject*PyLong_FromDouble(doublev)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject object from the integer part ofv, orNULL on failure.

PyObject*PyLong_FromString(constchar*str,char**pend,intbase)
Return value: New reference. Part of theStable ABI.

Return a newPyLongObject based on the string value instr, whichis interpreted according to the radix inbase. Ifpend is non-NULL,*pend will point to the first character instr which follows therepresentation of the number. Ifbase is0,str is interpreted usingtheInteger literals definition; in this case, leading zeros in anon-zero decimal number raises aValueError. Ifbase is not0,it must be between2 and36, inclusive. Leading spaces and singleunderscores after a base specifier and between digits are ignored. If thereare no digits,ValueError will be raised.

See also

Python methodsint.to_bytes() andint.from_bytes()to convert aPyLongObject to/from an array of bytes in base256. You can call those from C usingPyObject_CallMethod().

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

Convert a sequence of Unicode digits in the stringu to a Python integervalue.

New in version 3.3.

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

Create a Python integer from the pointerp. The pointer value can beretrieved from the resulting value usingPyLong_AsVoidPtr().

longPyLong_AsLong(PyObject*obj)
Part of theStable ABI.

Return a Clong representation ofobj. Ifobj is not aninstance ofPyLongObject, first call its__index__() method(if present) to convert it to aPyLongObject.

RaiseOverflowError if the value ofobj is out of range for along.

Returns-1 on error. UsePyErr_Occurred() to disambiguate.

Changed in version 3.8:Use__index__() if available.

Changed in version 3.10:This function will no longer use__int__().

longPyLong_AsLongAndOverflow(PyObject*obj,int*overflow)
Part of theStable ABI.

Return a Clong representation ofobj. Ifobj is not aninstance ofPyLongObject, first call its__index__()method (if present) to convert it to aPyLongObject.

If the value ofobj is greater thanLONG_MAX or less thanLONG_MIN, set*overflow to1 or-1, respectively, andreturn-1; otherwise, set*overflow to0. If any other exceptionoccurs set*overflow to0 and return-1 as usual.

Returns-1 on error. UsePyErr_Occurred() to disambiguate.

Changed in version 3.8:Use__index__() if available.

Changed in version 3.10:This function will no longer use__int__().

longlongPyLong_AsLongLong(PyObject*obj)
Part of theStable ABI.

Return a Clonglong representation ofobj. Ifobj is not aninstance ofPyLongObject, first call its__index__() method(if present) to convert it to aPyLongObject.

RaiseOverflowError if the value ofobj is out of range for alonglong.

Returns-1 on error. UsePyErr_Occurred() to disambiguate.

Changed in version 3.8:Use__index__() if available.

Changed in version 3.10:This function will no longer use__int__().

longlongPyLong_AsLongLongAndOverflow(PyObject*obj,int*overflow)
Part of theStable ABI.

Return a Clonglong representation ofobj. Ifobj is not aninstance ofPyLongObject, first call its__index__() method(if present) to convert it to aPyLongObject.

If the value ofobj is greater thanLLONG_MAX or less thanLLONG_MIN, set*overflow to1 or-1, respectively,and return-1; otherwise, set*overflow to0. If any otherexception occurs set*overflow to0 and return-1 as usual.

Returns-1 on error. UsePyErr_Occurred() to disambiguate.

New in version 3.2.

Changed in version 3.8:Use__index__() if available.

Changed in version 3.10:This function will no longer use__int__().

Py_ssize_tPyLong_AsSsize_t(PyObject*pylong)
Part of theStable ABI.

Return a CPy_ssize_t representation ofpylong.pylong mustbe an instance ofPyLongObject.

RaiseOverflowError if the value ofpylong is out of range for aPy_ssize_t.

Returns-1 on error. UsePyErr_Occurred() to disambiguate.

unsignedlongPyLong_AsUnsignedLong(PyObject*pylong)
Part of theStable ABI.

Return a Cunsignedlong representation ofpylong.pylongmust be an instance ofPyLongObject.

RaiseOverflowError if the value ofpylong is out of range for aunsignedlong.

Returns(unsignedlong)-1 on error.UsePyErr_Occurred() to disambiguate.

size_tPyLong_AsSize_t(PyObject*pylong)
Part of theStable ABI.

Return a Csize_t representation ofpylong.pylong must bean instance ofPyLongObject.

RaiseOverflowError if the value ofpylong is out of range for asize_t.

Returns(size_t)-1 on error.UsePyErr_Occurred() to disambiguate.

unsignedlonglongPyLong_AsUnsignedLongLong(PyObject*pylong)
Part of theStable ABI.

Return a Cunsignedlonglong representation ofpylong.pylongmust be an instance ofPyLongObject.

RaiseOverflowError if the value ofpylong is out of range for anunsignedlonglong.

Returns(unsignedlonglong)-1 on error.UsePyErr_Occurred() to disambiguate.

Changed in version 3.1:A negativepylong now raisesOverflowError, notTypeError.

unsignedlongPyLong_AsUnsignedLongMask(PyObject*obj)
Part of theStable ABI.

Return a Cunsignedlong representation ofobj. Ifobj is notan instance ofPyLongObject, first call its__index__()method (if present) to convert it to aPyLongObject.

If the value ofobj is out of range for anunsignedlong,return the reduction of that value moduloULONG_MAX+1.

Returns(unsignedlong)-1 on error. UsePyErr_Occurred() todisambiguate.

Changed in version 3.8:Use__index__() if available.

Changed in version 3.10:This function will no longer use__int__().

unsignedlonglongPyLong_AsUnsignedLongLongMask(PyObject*obj)
Part of theStable ABI.

Return a Cunsignedlonglong representation ofobj. Ifobjis not an instance ofPyLongObject, first call its__index__() method (if present) to convert it to aPyLongObject.

If the value ofobj is out of range for anunsignedlonglong,return the reduction of that value moduloULLONG_MAX+1.

Returns(unsignedlonglong)-1 on error. UsePyErr_Occurred()to disambiguate.

Changed in version 3.8:Use__index__() if available.

Changed in version 3.10:This function will no longer use__int__().

doublePyLong_AsDouble(PyObject*pylong)
Part of theStable ABI.

Return a Cdouble representation ofpylong.pylong must bean instance ofPyLongObject.

RaiseOverflowError if the value ofpylong is out of range for adouble.

Returns-1.0 on error. UsePyErr_Occurred() to disambiguate.

void*PyLong_AsVoidPtr(PyObject*pylong)
Part of theStable ABI.

Convert a Python integerpylong to a Cvoid pointer.Ifpylong cannot be converted, anOverflowError will be raised. Thisis only assured to produce a usablevoid pointer for values createdwithPyLong_FromVoidPtr().

ReturnsNULL on error. UsePyErr_Occurred() to disambiguate.