Easymutable

Чем mutable отличается от immutable типов?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Mutable — объект можно изменить после создания (list, dict, set, bytearray). Immutable — после создания не изменить (int, float, str, tuple, frozenset, bytes, bool).

lst = [1, 2]
print(id(lst))   # 140... (id останется тем же)
lst.append(3)    # тот же объект, изменён

s = "hi"
print(id(s))     # 140...
s += "!"         # создаётся НОВЫЙ объект
print(id(s))     # другой id
  • immutable → hashable, можно использовать как dict key / set element;
  • mutable → unhashable, нельзя;
  • tuple с mutable элементами — частично изменяемый: t = ([1],); t[0].append(2) OK, t[0] = [3] → TypeError;
  • mutable default args — общий坑 (см. отдельный вопрос).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.