Checking whether a variable is an integer or not
integer, python
Solution
If you need to do this, do
isinstance(<var>, int)
unless you are in Python 2.x in which case you want
isinstance(<var>, (int, long))
Do not use `type`. It is almost never the right answer in Python, since it blocks all the flexibility of polymorphism. For instance, if you subclass `int`, your new class should register as an `int`, which `type` will not do:
class Spam(int): pass
x = Spam(0)
type(x) == int # False
isinstance(x, int) # True
This adheres to Python's strong polymorphism: you should allow any object that behaves like an `int`, instead of mandating that it be one.
BUT
The classical Python mentality, though, is that it's easier to ask forgiveness than permission. In other words, don't check whether `x` is an integer; assume that it is and catch the exception results if it isn't:
try:
x += 1
except TypeError:
...
This mentality is slowly being overtaken by the use of abstract base classes, which let you register exactly what properties your object should have (adding? multiplying? doubling?) by making it inherit from a specially-constructed class. That would be the best solution, since it will permit exactly those objects with the necessary and sufficient attributes, but you will have to read the docs on how to use it.
Problem
How do I check whether a variable is an integer?
Related problems
- How to check if a float value is a whole number
- Integer square root in python
- How do I find out if a numpy array contains integers?
- What's the canonical way to check for type in Python?
- How to determine a Python variable's type?
- Correct way to detect sequence parameter?
- What's the canonical way to check for type in Python?