💻
Разработка в IT
Опубликовано:
15.04.2026
Обновлено:
14.04.2026

Типы данных в Python: int, float, str — полный разбор для начинающих

Дмитрий Сидоров

Каждое значение в Python принадлежит к определённому типу. Число 42 — целое, число 3.14 — дробное, текст «Москва» — строка. Тип определяет, какие операции допустимы: числа складываются, строки склеиваются, а попытка сложить число со строкой без преобразования вызовет ошибку. Три типа — int, float и str — покрывают большинство задач, с которыми сталкивается новичок в первые месяцы работы с языком.

Зачем Python знает тип каждого значения

Python хранит тип вместе со значением. Переменная не привязана к типу навсегда: сначала она указывает на целое число, потом на строку. Это называют динамической типизацией. Интерпретатор проверяет тип в момент выполнения операции, а не до запуска программы. Если передать в функцию строку «10» вместо числа 10, Python не угадает за вас. Он либо выдаст TypeError, либо выполнит операцию не так, как вы предполагали.

>>> x = 10
>>> type(x)
<class 'int'>
>>> x = 'десять'
>>> type(x)
<class 'str'>

Функция type() возвращает класс объекта. Она помогает убедиться, с каким типом работает код прямо сейчас.

Вторая функция для проверки — isinstance(). Она принимает объект и тип (или кортеж типов) и возвращает True или False. В отличие от type(), isinstance() учитывает наследование классов. Тип bool наследуется от int, поэтому isinstance(True, int) вернёт True, а type(True) is int — False.

>>> isinstance(42, int)
True
>>> isinstance(3.14, (int, float))
True
>>> isinstance('текст', str)
True

Для повседневных задач isinstance() предпочтительнее type(). Она гибче и корректно обрабатывает случаи с наследованием.

int — целые числа

Тип int хранит целые числа без дробной части: положительные, отрицательные и ноль. В Python 3 целые числа не имеют верхней границы размера. Память выделяется автоматически под столько цифр, сколько нужно. В языках вроде C и Java целые числа ограничены размером 32 или 64 бита — в Python такого ограничения нет.

>>> a = 100
>>> b = -7
>>> huge = 10 ** 1000
>>> len(str(huge))
1001

Арифметика с int

Стандартные операции: сложение (+), вычитание (−), умножение (*), целочисленное деление (//), остаток от деления (%), возведение в степень (**).

>>> 17 + 5
22
>>> 17 // 5
3
>>> 17 % 5
2
>>> 2 ** 10
1024

Оператор обычного деления (/) всегда возвращает float, даже если результат целый. Это поведение Python 3. Целочисленное деление (//) отбрасывает дробную часть и возвращает int, если оба операнда — int. Оператор остатка (%) полезен для проверки делимости: если x % 2 == 0, число чётное.

Системы счисления

Python поддерживает запись целых чисел в двоичной (0b), восьмеричной (0o) и шестнадцатеричной (0x) системах. Функции bin(), oct(), hex() выполняют обратное преобразование — из int в строку с соответствующим префиксом.

Подчёркивания в числах

С версии Python 3.6 допускается подчёркивание внутри числовых литералов для читаемости. Интерпретатор их полностью игнорирует.

>>> population = 8_100_000_000
>>> population
8100000000

float — числа с плавающей точкой

Тип float хранит дробные числа. Внутри Python использует формат двойной точности IEEE 754 (64 бита), что даёт примерно 15–17 значащих десятичных цифр.

Особенности представления

Не все десятичные дроби представимы точно в двоичной системе. Классический пример:

>>> 0.1 + 0.2
0.30000000000000004

Это не ошибка Python — так работает стандарт IEEE 754 в любом языке. Для финансовых расчётов используют модуль decimal из стандартной библиотеки.

Специальные значения float

Python поддерживает положительную бесконечность, отрицательную бесконечность и NaN (Not a Number). Проверять NaN через == бессмысленно: nan != nan по стандарту. Для проверки используют math.isnan().

Экспоненциальная запись

Большие и маленькие числа записывают через e: 3e8 означает 300 000 000.0, 6.626e-34 — постоянную Планка. Тип — float в любом случае.

str — строки

Строка в Python — неизменяемая последовательность символов Unicode. Создаётся через одинарные, двойные или тройные кавычки. Тройные кавычки допускают многострочный текст без символов экранирования.

Индексация и срезы

Каждый символ имеет индекс с нуля. Отрицательные индексы отсчитывают с конца. Срез [start:stop:step] возвращает новую строку. Классический приём для разворота — word[::-1].

Неизменяемость строк

Попытка присвоить символ по индексу вызовет TypeError. Любая операция со строкой создаёт новый объект в памяти.

Методы строк

strip() убирает пробелы по краям, lower()/upper() меняют регистр, replace() заменяет подстроку, split() разбивает строку на список, join() собирает список обратно. Все методы возвращают новую строку.

Форматирование через f-строки

С Python 3.6 появились f-строки: перед кавычкой ставится буква f, выражения в фигурных скобках вычисляются и подставляются.

>>> f'Меня зовут {name}, мне {age} лет'
>>> f'{pi:.2f}' # '3.14'
>>> f'{total:,}' # '1,234,567'

F-строки читаются проще и выполняются быстрее, чем .format() и оператор %.

Преобразование между типами

Python не складывает int и str автоматически. Для преобразования используют int(), float(), str().

>>> int('42') → 42
>>> float('3.14') → 3.14
>>> str(100) → '100'

При преобразовании float в int дробная часть отбрасывается без округления. round() в Python 3 использует банковское округление (к ближайшему чётному): round(3.5) = 4, round(4.5) = 4.

Смешанные операции

При арифметике с int и float Python приводит int к float автоматически. Для строк автоматического преобразования нет: + между str и int вызывает ошибку, но * повторяет строку заданное число раз ("ha" * 3 → 'hahaha').

Ввод данных от пользователя

Функция input() всегда возвращает строку. Преобразование в число — ручное. try/except защищает от ValueError при некорректном вводе.

Читайте также