Вопрос №6
Осталось:
Что такое изменяемые и неизменяемые типы данных?
Образцовый ответ
Показывать ответ по умолчанию
В Python все объекты делятся на изменяемые и неизменяемые в зависимости от того, можно ли менять их содержимое после создания.
Неизменяемые:
- int, float, bool
- str
- tuple
- frozenset
При «изменении» создаётся новый объект:
x = 10 print(id(x)) # Например: 140234866357520 x += 1 print(id(x)) # Другой id — это новый объект
Изменяемые:
- list
- dict
- set
Объект изменяется «на месте»:
lst = [1, 2, 3] print(id(lst)) # Например: 140234866400064 lst.append(4) print(id(lst)) # Тот же id — объект изменился
Почему это важно:
- Ключи словаря могут быть только неизменяемыми объектами.
- Передача в функции: изменяемые объекты могут быть изменены внутри функции, что может привести к неожиданным побочным эффектам.
- Значения по умолчанию: не стоит использовать изменяемые объекты как значения по умолчанию в функциях.
# Распространённая ошибка def add_item(item, lst=[]): # Один список на все вызовы! lst.append(item) return lst # Правильный подход def add_item(item, lst=None): if lst is None: lst = [] lst.append(item) return lst
