Вопрос раскрывает последствия изменения неизменяемых объектов внутри функций.
При попытке изменить неизменяемую переменную (например, число или строку) внутри функции создаётся новый объект. Исходная переменная вне функции останется без изменений.
Неизменяемые типы (int, str, tuple) нельзя модифицировать. Любая операция изменения создаёт новый объект в памяти.
Пример с числами:
def increment(x):
x += 1 # Создаётся новый объект
print("Inside:", x) # 6
num = 5
increment(num)
print("Outside:", num) # 5 (не изменился)Пример со строками:
def add_prefix(s):
s = "prefix_" + s # Новая строка
print("Inside:", s) # "prefix_hello"
text = "hello"
add_prefix(text)
print("Outside:", text) # "hello" (старая строка)Почему так происходит:
Неизменяемые объекты защищены от случайных изменений.
Функция работает с копией ссылки, но при изменении создаётся новый объект.
Вывод:
Изменение неизменяемых переменных внутри функции не затрагивает внешние переменные.