|
| 1 | +!!! info "" |
| 2 | + **Изменяемые типы данных** — это те, чье содержимое можно изменить после создания |
| 3 | + (например, списки `list`, словари `dict`, множества `set`). Неизменяемые типы данных — это те, чье содержимое |
| 4 | + нельзя изменить после создания (например, числа `int`, `float`, строки `str`, кортежи `tuple`). |
| 5 | + |
| 6 | +## Подробный ответ |
| 7 | + |
| 8 | +<span class="badge">Изменяемые (mutable)</span> типы: |
| 9 | +Объекты этих типов могут быть изменены "на месте" после их создания. |
| 10 | +Это означает, что вы можете модифицировать их содержимое, не создавая новый объект. |
| 11 | + |
| 12 | +```python |
| 13 | + my_list = [1, 2] |
| 14 | + my_list.append(3) |
| 15 | + print(my_list) # [1, 2, 3] |
| 16 | + |
| 17 | + my_dict = {"a": 1} |
| 18 | + my_dict["b"] = 2 |
| 19 | + print(my_dict) # {'a': 1, 'b': 2} |
| 20 | + |
| 21 | + my_set = {1, 2} |
| 22 | + my_set.add(3) |
| 23 | + print(my_set) # {1, 2, 3} |
| 24 | +``` |
| 25 | +Пользовательские классы (если не реализована специальная логика). |
| 26 | + |
| 27 | +<span class="badge">Неизменяемые (immutable)</span> типы: |
| 28 | +Объекты этих типов не могут быть изменены после их создания. |
| 29 | +Любая операция, которая, казалось бы, изменяет неизменяемый объект, на самом деле создает новый объект. |
| 30 | + |
| 31 | +```python |
| 32 | + x = 5 |
| 33 | + x = x + 1 # создается новый объект 6, 5 остается неизменным |
| 34 | + |
| 35 | + y = 3.14 |
| 36 | + y = y * 2 # та же логика, что и с int |
| 37 | + |
| 38 | + s = "hello" |
| 39 | + s = s + " world" # s ссылается на новый объект |
| 40 | + |
| 41 | + my_tuple = (1, 2) |
| 42 | + my_tuple = my_tuple + (3,) # создается новый кортеж (1, 2, 3) |
| 43 | + |
| 44 | + True, False, None # уникальные объекты |
| 45 | +``` |
| 46 | +## Особенности |
| 47 | +Неизменяемые объекты могут использоваться в качестве ключей словарей и элементов множеств, так как их хеш-значение не меняется. |
0 commit comments