Puede utilizar el types
module:
>>> import types
>>> var = 1
>>> NumberTypes = (types.IntType, types.LongType, types.FloatType, types.ComplexType)
>>> isinstance(var, NumberTypes)
True
Nota del uso de una tupla para probar contra varios tipos.
Bajo el capó, IntType
es sólo un alias para int
, etc .:
>>> isinstance(var, (int, long, float, complex))
True
El tipo complex
requiere que su pitón fue compilado con soporte para los números complejos; si desea guardar para este uso un bloque try/except:
>>> try:
... NumberTypes = (types.IntType, types.LongType, types.FloatType, types.ComplexType)
... except AttributeError:
... # No support for complex numbers compiled
... NumberTypes = (types.IntType, types.LongType, types.FloatType)
...
o si sólo tiene que utilizar los tipos directamente:
>>> try:
... NumberTypes = (int, long, float, complex)
... except NameError:
... # No support for complex numbers compiled
... NumberTypes = (int, long, float)
...
Por último, pero no menos importante, se puede utilizar el numbers.Numbers
abstract base type (nuevo en Python 2.6) para apoyar también los tipos numéricos personalizados que no derivan directamente de los tipos anteriores:
>>> import numbers
>>> isinstance(var, numbers.Number)
True
Este módulo hace que el supuesto de que el tipo complex
está activado; obtendrá un error de importación si no es así.
Si está dispuesto a usar numpy, 'numpy.isfinite' debería hacer el truco. –