Python
Легкий
Какие типы данных в Python являются изменяемыми, а какие неизменяемыми?
Изменяемые и неизменяемые типы в Python
Неизменяемые (Immutable):
| Тип | Пример |
|---|---|
| int | 42 |
| float | 3.14 |
| bool | True |
| str | "hello" |
| tuple | (1, 2, 3) |
| frozenset | frozenset({1, 2}) |
| bytes | b"data" |
s = "hello"
s[0] = "H" # TypeError!
s = "Hello" # Создаётся новый объект
Изменяемые (Mutable):
| Тип | Пример |
|---|---|
| list | [1, 2, 3] |
| dict | {"a": 1} |
| set | {1, 2, 3} |
| bytearray | bytearray(b"data") |
lst = [1, 2, 3]
lst[0] = 10 # OK, тот же объект
lst.append(4) # OK
Практические последствия:
1. Ключи словаря:
d = {(1, 2): "tuple"} # OK
d = {[1, 2]: "list"} # TypeError!
2. Аргументы по умолчанию:
# ПЛОХО
def add(item, lst=[]):
lst.append(item)
return lst
# ХОРОШО
def add(item, lst=None):
if lst is None:
lst = []
lst.append(item)
return lst
3. Копирование:
a = [1, 2, 3]
b = a # Ссылка на тот же объект
b = a[:] # Поверхностная копия
b = copy.deepcopy(a) # Глубокая копия
Похожие вопросы
Готовитесь к собеседованию?
ENIGMA AI — невидимый ИИ-помощник для технических интервью
Попробовать бесплатно