można użyć types
module:
>>> import types
>>> var = 1
>>> NumberTypes = (types.IntType, types.LongType, types.FloatType, types.ComplexType)
>>> isinstance(var, NumberTypes)
True
Zanotować użycie krotki do testowania przeciwko wielu typom.
Pod maską IntType
tylko aliasem int
itp .:
>>> isinstance(var, (int, long, float, complex))
True
Typ complex
wymaga, aby pyton został skompilowany ze wsparciem dla liczb zespolonych; jeśli chcesz ustrzec dla tego zastosowania spróbuj/z wyjątkiem bloku:
>>> 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)
...
lub jeśli po prostu używać typów bezpośrednio:
>>> try:
... NumberTypes = (int, long, float, complex)
... except NameError:
... # No support for complex numbers compiled
... NumberTypes = (int, long, float)
...
Last but not least, można użyć numbers.Numbers
abstract base type (nowość Python 2.6) również obsługują niestandardowe typy numeryczne, które nie wynikają bezpośrednio z powyższych typów:
>>> import numbers
>>> isinstance(var, numbers.Number)
True
moduł ten czyni założenie, że typ complex
jest włączona; otrzymasz błąd importu, jeśli tak nie jest.
Jeśli chcesz używać numpy, 'numpy.isfinite' powinno wystarczyć. –