Курс Python → Python Аргументы по умолчанию

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


def add_item(item, items=[]):
    items.append(item)
    return items

print(add_item('apple'))  # ['apple']
print(add_item('banana'))  # ['apple', 'banana']

В приведенном примере функция add_item принимает элемент и добавляет его в список items. При первом вызове функции список items содержит только ‘apple’, но при следующем вызове ‘banana’ добавляется к списку. Это происходит потому, что список items сохраняет свое состояние между вызовами функции.

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


def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

print(add_item('apple'))  # ['apple']
print(add_item('banana'))  # ['banana']

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

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Форматирование строк с % в Python
  2. Частичное совпадение пользовательского ввода в Python 3.10
  3. Генерация UUID в Python
  4. Concrete Paths — метод .with_suffix()
  5. Оператор объединения словарей
  6. Уникальные значения из списка
  7. Измерение времени выполнения кода с помощью time
  8. Метод difference_update() — разность множеств
  9. Запуск внешнего кода в Jupyter
  10. Оператор «is not» в Python
  11. Сложные типы данных в Python
  12. Оператор «and» в Python
  13. Управление асинхронными задачами на Python.
  14. Оценка точности модели
  15. Оператор «моржа» (Walrus Operator)
  16. Работа с контекстными менеджерами
  17. Лимиты на ресурсы Python
  18. Оператор «not» в Python
  19. Метод clear для коллекций
  20. Подписка на Kaspersky Team
  21. Объединение списков в строку
  22. Big O оптимизация
  23. Форматирование строк в Python.
  24. Аннотации типов в Python
  25. Работа с JSON данными в Python
  26. Проверка на палиндром
  27. Лямбда-функции в цикле
  28. Структура данных словарь в Python
  29. Модуль antigravity: генерация координат
  30. Измерение времени выполнения кода
  31. Списковые включения в Python
  32. Работа с файлами в Python
  33. Отношения подклассов в Python
  34. Создание словаря в Python
  35. Параллельные вычисления в Python
  36. Оператор морж в Python 3.8
  37. Решатель судоку на Python с pygame
  38. Принципы SRP и OCP
  39. Безопасный доступ к значениям словаря
  40. Блок else в Python
  41. Получение идентификатора объекта в памяти
  42. Работа с итераторами в Python
  43. Основные операции с библиотекой Numpy
  44. Строки в Python: апострофы и кавычки
  45. Работа с collections в Python.

Marketello читают маркетологи из крутых компаний