Модель памяти и изменяемость объектов
Python
Senior
Яндекс
Объясните разницу между изменяемыми и неизменяемыми объектами в Python и как это влияет на передачу аргументов в функции.
Ответы
Mutable vs immutable и аргументы
Неизменяемые типы (int, float, str, tuple, frozenset) нельзя изменить «на месте» — любые операции возвращают новый объект. Изменяемые типы (list, dict, set, большинство пользовательских объектов) можно модифицировать in-place.
В Python аргументы передаются по ссылке на объект («call by object reference»). Для неизменяемых типов попытка «изменить» внутри функции создаёт новый объект и не влияет на оригинал.
Для изменяемых типов модификации (append, update) затрагивают исходный объект:
```python
def add_item(lst):
lst.append(42)
items = []
add_item(items)
print(items) # [42]
```