Вопрос проверяет понимание базовых характеристик объектов Python, которые напрямую влияют на поведение при передаче, копировании и изменении значений.
В Python объекты делятся на изменяемые (например, списки, словари) и неизменяемые (например, строки, кортежи, числа). Изменяемые можно менять "на месте", неизменяемые — нет. Это важно при передаче объектов в функции, потому что изменяемые могут быть модифицированы внутри функции, а неизменяемые — нет.
1. Неизменяемые объекты (Immutable):
Примеры: int, float, str, tuple, frozenset
При изменении создается новый объект.
Безопасны при использовании в многопоточности.
a = "hello"
print(id(a)) # id1
a += " world"
print(id(a)) # другой id — это уже другой объект2. Изменяемые объекты (Mutable):
Примеры: list, dict, set, пользовательские классы
Можно изменять содержимое без создания нового объекта.
lst = [1, 2, 3]
print(id(lst)) # id1
lst.append(4)
print(id(lst)) # тот же id — объект изменился на месте3. Влияние на функцииz:
При передаче в функцию:
Изменяемые могут быть модифицированы внутри.
Неизменяемые — нет.
def change(x):
x.append(4)
a = [1, 2]
change(a)
print(a) # [1, 2, 4]Вывод:
Понимание изменяемости объектов помогает избегать неожиданных побочных эффектов при работе с функциями и структурами данных.