Статьи

Учебные материалы по языку Python — от основ до продвинутых тем

int

Страница 20 из 34 · 2026-10-26 · 3 мин чтения

Создание

Целые числа в Python имеют неограниченную точность:

a = 42b = 10 ** 50c = int("123")d = int("ff", 16)e = int(3.99)f = int()print(b)print(e)

int(3.99) отбрасывает дробную часть и даёт 3. Для строк можно указать основание от 2 до 36.

Литералы

print(1_000_000)print(0xFF)print(0o17)print(0b1010)

Операции

ОперацияОписание
a + b, a - b, a * bСложение, вычитание, умножение
a / bИстинное деление, результат float
a // bДеление с округлением вниз
a % bОстаток, знак совпадает со знаком делителя
a ** bВозведение в степень
-a, +aУнарные знаки
abs(a)Модуль
divmod(a, b)Пара (a // b, a % b)
pow(a, b, m)a ** b % m эффективно
a & b, `a \b, a ^ b, ~a`
a << n, a >> nСдвиги
print(divmod(17, 5))print(divmod(-17, 5))print(pow(2, 100, 1000))print(7 // -2)print(7 % -2)

Результат: (3, 2), (-4, 3), 376, -4, -1.

Методы и атрибуты

МетодОписание
bit_length()Число бит, необходимых для представления
bit_count()Число единичных бит (Python 3.10+)
to_bytes(length, byteorder, signed=False)Преобразование в байты
from_bytes(bytes, byteorder, signed=False)Классовый метод: байты в число
as_integer_ratio()Пара (числитель, 1)
conjugate()Само число
is_integer()Всегда True (Python 3.12+)
real, imag, numerator, denominatorАтрибуты для совместимости с другими числовыми типами
n = 255print(n.bit_length())print(n.bit_count())print(n.to_bytes(2, "big"))print(int.from_bytes(b"\x01\x00", "little"))print(int.from_bytes(b"\xff", "big", signed=True))

Результат: 8, 8, b'\x00\xff', 1, -1.

Преобразование в строку

n = 255print(str(n))print(bin(n))print(oct(n))print(hex(n))print(f"{n:b}")print(f"{n:08b}")print(f"{n:x}")print(f"{n:X}")print(f"{n:,}")

Кеширование малых чисел

CPython хранит единые объекты для чисел от -5 до 256, поэтому is для них может вернуть True. Не опирайтесь на это поведение: для сравнения чисел всегда используйте ==.

a = 256b = 256print(a is b)

Ограничение длины строки

Начиная с Python 3.11 преобразование очень длинных чисел в строку и обратно ограничено 4300 цифрами для защиты от атак на производительность:

import syssys.set_int_max_str_digits(0)

Значение 0 снимает ограничение.

Математика с целыми

import mathprint(math.gcd(12, 18))print(math.lcm(4, 6))print(math.factorial(10))print(math.isqrt(99))print(math.comb(5, 2))print(math.perm(5, 2))

Результат: 6, 12, 3628800, 9, 10, 20.

Задания

  1. Преобразуйте число в двоичную строку без использования bin и f-строк.
  2. Посчитайте сумму цифр числа 2 ** 1000.
  3. Упакуйте три числа от 0 до 255 в 3 байта и распакуйте обратно.