Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: mutable, arguments, function

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

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

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

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

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

Когда в качестве значения по умолчанию для аргумента функции используется мутабельный тип данных (например, список или словарь), это может привести к непредсказуемым результатам. Проблема заключается в том, что значения по умолчанию для аргументов вычисляются только один раз при определении функции, и этот объект сохраняется между вызовами функции. Если объект изменяется в теле функции, эти изменения сохраняются и влияют на последующие вызовы функции.

Пример:

def append_to_list(value, my_list=[]):
    	my_list.append(value)
    	return my_list

print(append_to_list(1))  # Выведет [1]
print(append_to_list(2))  # Выведет [1, 2] — неожиданно, так как список изменился

Правильным подходом будет использование неизменяемых объектов (например, None), чтобы создать новый объект каждый раз, когда функция вызывается:

def append_to_list(value, my_list=None):
    	if my_list is None:
        	my_list = []
    	my_list.append(value)
    	return my_list

Когда использовать:

  • При использовании дефолтных значений в функциях нужно избегать мутабельных объектов для предотвращения неожиданных изменений.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Python

    Python

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

#mutable

#arguments

#function

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

  • Аватар

    Python Guru

    Sergey Filichkin

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