Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Как корректно объявлять значения по умолчанию для аргументов-коллекций?

Вопрос проверяет понимание особенностей значений по умолчанию в Python и типичных ошибок при работе с изменяемыми объектами.

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

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

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

Почему нельзя использовать список или словарь напрямую

В Python значение по умолчанию создается один раз:

def add_item(lst=[]):
    lst.append(1)
    return lst

Результат:

add_item()  # [1]
add_item()  # [1, 1]

Список один и тот же.

Правильный способ

Использовать None как маркер:

def add_item(lst=None):
    if lst is None:
        lst = []
    lst.append(1)
    return lst

Теперь список создается каждый раз.

Почему так сделано в Python

Причина:

  • значения по умолчанию хранятся в объекте функции

  • они не пересоздаются при каждом вызове

Это оптимизация, но она требует аккуратности.

Когда это особенно важно

  1. Кэш

  2. Аккумуляторы

  3. Конфигурации

  4. API-клиенты

Вывод

Для аргументов-коллекций безопасный шаблон — использовать None и инициализацию внутри функции.

  • Аватар

    Python Guru

    Sergey Filichkin

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Python

    Python

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

#default

#argument

#mutability

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

  • Аватар

    Python Guru

    Sergey Filichkin

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