Какие основные типы данных в Python и как они классифицируются

Ответ

В Python типы данных принято классифицировать по их изменяемости (mutability) — возможности изменить объект после его создания.

Неизменяемые (Immutable) типы

Значения этих объектов нельзя изменить после их создания. Любая операция, которая выглядит как изменение, на самом деле создает новый объект.

  • Числовые типы:
    • int — целые числа (e.g., 10, -5).
    • float — числа с плавающей точкой (e.g., 3.14).
    • complex — комплексные числа (e.g., 1+2j).
  • Последовательности:
    • str — строки (e.g., 'hello').
    • tuple — кортежи, неизменяемые списки (e.g., (1, 'a', True)).
    • bytes — последовательности байт.
  • Логический тип:
    • bool — булевы значения (True, False).
  • Множества:
    • frozenset — неизменяемая версия множества.
  • Специальный тип:
    • NoneType — имеет единственное значение None.

Изменяемые (Mutable) типы

Эти объекты можно изменять «на месте» (in-place) после их создания, не создавая новый объект.

  • Последовательности:
    • list — списки, упорядоченные изменяемые коллекции (e.g., [1, 'a', 3.14]).
  • Словари:
    • dict — словари, коллекции пар «ключ-значение» (e.g., {'key': 'value'}).
  • Множества:
    • set — неупорядоченные коллекции уникальных элементов (e.g., {1, 2, 3}).

Пример различия:

# Изменяемый тип (list)
my_list = [1, 2, 3]
my_list.append(4) # Объект my_list изменился
print(my_list)    # Вывод: [1, 2, 3, 4]

# Неизменяемый тип (str)
my_string = "hello"
# my_string[0] = 'H' # Это вызовет TypeError
new_string = my_string.capitalize() # Создается новый объект
print(my_string)    # Вывод: 'hello'
print(new_string) # Вывод: 'Hello'