Курс 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. Печать календаря
  2. Мониторинг памяти с Pympler
  3. Возвращение нескольких значений через кортеж или класс
  4. Карта бомбоубежищ в Москве и Питере
  5. Установка и использование модуля Wikipedia
  6. Цикл for в Python
  7. Удаление дубликатов из списка
  8. Подсчет элементов в Python
  9. Метод ifloordiv для пользовательских классов
  10. Изменяемые и неизменяемые объекты
  11. Управление ресурсами в Python
  12. Работа со строками в Python
  13. Поиск кода
  14. Копирование объектов в Python
  15. Исключение NotImplementedError
  16. Обработка исключений в Python
  17. Инициализация объекта
  18. Анонимные функции в Python
  19. Обход элементов в Python
  20. Определение имен функций
  21. Атрибуты класса и экземпляра в Python
  22. Работа с deque в Python
  23. Возврат нескольких значений
  24. Работа с кортежами в Python
  25. Python defaultdict добавление ключа
  26. Метод rrshift для пользовательских объектов
  27. Методы list в Python
  28. Возврат нескольких значений из функции
  29. Обработка исключений в Python
  30. Методы split() и join() — Python строк.
  31. Игра «Угадывание чисел»
  32. Циклы в Python
  33. Скачать видео с YouTube
  34. Назначение максимального и минимального значения переменной в Python.
  35. Присвоение значений переменным в Python
  36. Форматирование строк в Python.
  37. Изменение элемента списка
  38. Конвертация коллекций в Python
  39. Antigravity модуль
  40. Модуль subprocess: запуск внешних команд
  41. Определение объема памяти объекта
  42. Метод rmatmul для обратного матричного умножения
  43. Избегайте двойного подчеркивания
  44. Howdoi — получение ответов из терминала

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