On Nov 12, 1:28 am, "lallous" <lall...@lgwm.org> wrote: > Hello, > > I am a little confused on how to check if a python variable is an integer or > not. > > Sometimes PyInt_Check() fails and PyLong_Check() succeeds.
I assume you are using Python 2.x. There are two integer types: (1) PyInt which stores small values that can be stored in a single C long and (2) PyLong which stores values that may or may not fit in a single C long. The number 2 could arrive as either a PyInt or a PyLong. Try something like the following: if PyInt_CheckExact() myvar = PyInt_AS_LONG() else if PyLong_CheckExact() myvar = PyLong_As_Long() if ((myvar == -1) && (PyErr_Occurred()) # Too big to fit in a C long Python 3.x is a little easier since everything is a PyLong. > > How to properly check for integer values? > > OTOH, I tried PyNumber_Check() and: > > (1) The doc says: Returns 1 if the object o provides numeric protocols, and > false otherwise. This function always succeeds. > > What do they mean: "always succeeds" ? That it will always return true or false; it won't raise an error. > > (2) It seems PyNumber_check(py_val) returns true when passed an instance! > > Please advise. > > -- > Elias casevh -- http://mail.python.org/mailman/listinfo/python-list