Sobes.tech
Back to questions
Junior — Middle
81

Чем отличаются изменяемые и неизменяемые типы данных в Python и в чем между ними основные различия?

Companies where asked
Цифрум

Answer from AI

sobes.tech AI

В Python типы данных делятся на изменяемые (mutable) и неизменяемые (immutable) в зависимости от того, можно ли изменить объект после его создания.

  • Неизменяемые типы: int, float, bool, str, tuple, frozenset

    • После создания объекта изменить его содержимое нельзя.
    • При изменении создаётся новый объект.
  • Изменяемые типы: list, dict, set, bytearray

    • Можно изменять содержимое объекта без создания нового.

Основные различия:

  • Поведение при присваивании и копировании: изменяемые объекты при передаче по ссылке могут изменяться в разных местах программы, что требует осторожности.

  • Использование в качестве ключей словарей: только неизменяемые объекты могут быть ключами.

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

Пример:

# Неизменяемый тип
s = "hello"
s2 = s.replace('h', 'j')  # создаётся новый объект
print(s)  # hello
print(s2) # jello

# Изменяемый тип
lst = [1, 2, 3]
lst.append(4)  # изменяет существующий объект
print(lst)  # [1, 2, 3, 4]