Какие встроенные типы данных есть в Python?

«Какие встроенные типы данных есть в Python?» — вопрос из категории Python, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python типы данных делятся на встроенные (immutable и mutable) и специализированные из стандартной библиотеки. Вот основные встроенные:

Неизменяемые (Immutable):

  • Числовые:
    • int — целые числа (неограниченной точности).
    • float — числа с плавающей запятой.
    • complex — комплексные числа.
  • Последовательности:
    • str — строки (последовательности Unicode-символов).
    • tuple — кортеж (упорядоченная, неизменяемая коллекция).
    • bytes — неизменяемая последовательность байтов.
    • range — диапазон целых чисел.
  • Множества (Set Types):
    • frozenset — неизменяемое множество.
  • Словари (Mapping Type):
    • Ключи словаря должны быть неизменяемого типа (например, str, int, tuple).

Изменяемые (Mutable):

  • Последовательности:
    • list — список (упорядоченная, изменяемая коллекция).
  • Множества (Set Types):
    • set — изменяемое множество (неупорядоченная коллекция уникальных элементов).
  • Словари (Mapping Type):
    • dict — словарь (неупорядоченная коллекция пар ключ-значение).
  • Байтовые массивы:
    • bytearray — изменяемая последовательность байтов.

Примеры и ключевые отличия:

# Неизменяемые (immutable)
x = 10        # int
x = 20       # Создается новый объект, старый удаляется (если на него нет ссылок)

t = (1, 2, 3) # tuple
# t[0] = 5   # Вызовет TypeError: 'tuple' object does not support item assignment

s = "hello"  # str
# s[0] = 'H' # TypeError: 'str' object does not support item assignment

# Изменяемые (mutable)
lst = [1, 2, 3] # list
lst[0] = 99     # Объект списка изменяется на месте
print(lst)      # [99, 2, 3]

d = {'a': 1}    # dict
d['b'] = 2      # Добавляем новую пару ключ-значение в существующий объект

Понимание мутабельности критично для корректной работы с функциями, присваиванием и для избежания неожиданных сайд-эффектов.

Видео-ответы