int — целые числа без страха больших значений
Целые числа в Python могут расти намного больше, чем в большинстве других языков — и остаются при этом неизменяемыми объектами.
int (integer — целое число) — тип для чисел без дробной
части: положительных, отрицательных и нуля.
print(0)
print(42)
print(-17)
print(type(42))
Числа практически без ограничения размера
В отличие от многих других языков программирования, где целые числа ограничены
фиксированным диапазоном (например, 32 или 64 бита), в Python int
может расти сколь угодно — точность произвольная, ограниченная практически
только доступной памятью компьютера, а не языком.
huge = 10 ** 100
print(huge)
Числа неизменяемы — продолжение
Мы уже видели это в разделе 4.1 на примере age. Ещё раз, уже
с двумя именами:
a = 10
b = a
a += 1
print(a) # 11
print(b) # 10 — b не изменился
id(256) и id(257) как «доказательство» особого поведения маленьких чисел. Это деталь реализации CPython (оптимизация кеширования маленьких целых чисел), а не гарантия языка Python — полагаться на неё в реальном коде нельзя, и как обучающий пример она скорее запутывает, чем помогает.bool — особый родственник int
Значения True и False образуют
тип bool — и исторически он тесно связан с
int: True ведёт себя как
1, а False — как
0.
print(int(True)) # 1
print(int(False)) # 0
print(True + True) # 2
bool технически «числовой» — деталь языка, а не приглашение складывать True + True в реальном коде. Полноценно об условиях и логике — в главе про условия; здесь достаточно знать связь с числами, если вы её где-то встретите.Разделители-подчёркивания для читаемости
В длинных числах легко потерять счёт нулям. Python позволяет разбивать число подчёркиваниями — они не влияют на значение, только на читаемость:
population = 38_000_000
print(population) # 38000000
Сокращённое присваивание
Операторы вроде += — это компактная запись «пересчитать и
переприсвоить», а не «изменить число на месте»:
x = 10
x += 1 # то же, что x = x + 1
x -= 2 # то же, что x = x - 2
x *= 3 # то же, что x = x * 3