все Python 3numbersпонятие
numbers.Real
числовая башня
Абстрактный класс вещественных чисел: всё из Complex плюс сравнение, округление, float(). Сюда входят float, int, Fraction.
Синтаксис
isinstance(x, numbers.Real)
Ловушка: Decimal — не Real, хотя выглядит вещественным числом. Он намеренно не встроен в башню, потому что не смешивается с float: Decimal('1.5') + 0.5 даёт TypeError. Значит, проверка isinstance(x, numbers.Real) отвергнет Decimal; если он нужен, проверяйте Number или Decimal отдельно. complex тоже не Real.
Примеры
import numbers
from decimal import Decimal
from fractions import Fraction
print([isinstance(v, numbers.Real) for v in (2.5, 3, Fraction(1, 2), 1j, Decimal('1.5'))]) # → [True, True, True, False, False]
try:
Decimal('1.5') + 0.5
except TypeError as e:
print(type(e).__name__) # → TypeError — Decimal и float не смешиваются
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности