Какие знаешь иммутабельные структуры данных
Python
Junior
Без компании
Какие знаешь иммутабельные структуры данных
Ответы
В Python иммутабельными (неизменяемыми) структурами данных являются:
- **Числа** (`int`, `float`, `complex`)
```
x = 5 # нельзя изменить значение 5
```
- **Строки** (`str`)
```
s = "hello"
# s[0] = 'H' # вызовет ошибку
```
- **Кортежи** (`tuple`)
```
t = (1, 2, 3)
# t[0] = 4 # ошибка
```
- **Замороженные множества** (`frozenset`)
```
fs = frozenset([1, 2, 3])
# fs.add(4) # ошибка
```
- **Байтовые строки** (`bytes`)
```
b = b'abc'
# b[0] = 65 # ошибка
```
**Иммутабельность** означает, что после создания объект нельзя изменить. Любая операция, изменяющая объект, создает новый. Например, `s += " world"` создает новую строку.
Для создания пользовательских иммутабельных классов можно использовать `@dataclass(frozen=True)` или переопределять `__setattr__`.