È possibile utilizzare il types
module:
>>> import types
>>> var = 1
>>> NumberTypes = (types.IntType, types.LongType, types.FloatType, types.ComplexType)
>>> isinstance(var, NumberTypes)
True
Nota del uso di una tupla per testare contro più tipi.
Sotto il cofano, IntType
è solo un alias per int
, ecc .:
>>> isinstance(var, (int, long, float, complex))
True
Il tipo complex
necessario che il pitone è stato compilato con il supporto per i numeri complessi; se si vuole custodire per questo uso un blocco 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 se semplicemente utilizzare i tipi direttamente:
>>> try:
... NumberTypes = (int, long, float, complex)
... except NameError:
... # No support for complex numbers compiled
... NumberTypes = (int, long, float)
...
ultimo ma non meno importante, è possibile utilizzare il numbers.Numbers
abstract base type (nuova in pitone 2.6) per supportare anche tipi numerici personalizzati che non derivano direttamente dai tipi di cui sopra:
>>> import numbers
>>> isinstance(var, numbers.Number)
True
Questo modulo non fare l'ipotesi che il tipo complex
è attivato; riceverai un errore di importazione se non lo è.
Se si è disposti a usare numpy, 'numpy.isfinite' dovrebbe fare il trucco. –