Python Glossary English

все 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Сообщить о неточности