Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: mutability, reference

Почему изменяемые объекты, переданные в функцию, могут изменяться снаружи?

Вопрос проверяет понимание модели передачи аргументов и работы с объектами в Python.

Короткий ответ

В Python в функцию передается ссылка на объект, а не копия. Если объект изменяемый, функция может изменить его состояние. Эти изменения будут видны снаружи функции. Это называется побочным эффектом.

Длинный ответ

Как передаются аргументы в Python

Python использует передачу ссылки на объект.

Это означает:

  • переменная хранит ссылку

  • функция получает ту же ссылку

Пример

def add_item(lst):
    lst.append(1)

data = []
add_item(data)

print(data)  # [1]

Функция изменила исходный список.

Почему это происходит

Список — изменяемый объект.

Изменяемые типы:

  • list

  • dict

  • set

Неизменяемые:

  • int

  • str

  • tuple

Когда это проблема

Проблемы возникают:

  1. при скрытых побочных эффектах

  2. при работе с кэшем

  3. при многопоточности

Как избежать

  1. Делать копию:

def func(lst):
    lst = lst.copy()
  1. Использовать неизменяемые структуры

  2. Документировать поведение функции

Вывод

Изменения происходят, потому что функции работают с тем же объектом, а не его копией.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#mutability

#reference

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.