все Python 3numbersпонятие
numbers.Rational
числовая башня
Абстрактный класс рациональных чисел: Real плюс numerator и denominator. Сюда входят int, bool и Fraction.
Синтаксис
isinstance(x, numbers.Rational)
float — не Rational, хотя любой float точно равен дроби и умеет as_integer_ratio(): у него нет numerator и denominator. А вот int — Rational, и (5).numerator == 5, (5).denominator == 1. Поэтому функция, принимающая Rational, получит int и Fraction, но не 0.5.
Примеры
import numbers
from fractions import Fraction
print([isinstance(v, numbers.Rational) for v in (3, Fraction(1, 3), 0.5)]) # → [True, True, False]
print((5).numerator, (5).denominator, (0.5).as_integer_ratio()) # → 5 1 (1, 2)
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности