Курс 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. Декодирование байтов в строку
  3. Получение идентификатора объекта в памяти
  4. Вывод букв строки в Python
  5. Объединение списков с использованием itertools.chain
  6. Замена текста с re.sub()
  7. Копирование объектов в Python
  8. Удаление дубликатов из списка
  9. Переворот строки
  10. Обработка данных в Python
  11. Объединение словарей в Python
  12. Переопределение метода __rshift__
  13. Введение в Python
  14. Поиск простых чисел
  15. Получение текущей директории
  16. Работа с изображениями PIL
  17. Defaultdict в Python
  18. Форматирование даты с strftime()
  19. Работа с библиотекой xkcd
  20. Функция print() — вывод информации
  21. Установка и использование emoji
  22. Создание графики с черепахой
  23. Бинарный поиск
  24. Аннотации типов в Python
  25. Проверка памяти объекта
  26. Работа с индексами списков
  27. Работа с NumPy
  28. Оператор * в Python
  29. Блок try…finally в Python
  30. Оператор is в Python
  31. Работа с zip()
  32. Присоединение элементов коллекции
  33. Структурирование данных с Pydantic
  34. Локальные переменные.
  35. Работа с очередями в Python
  36. Генераторы списков
  37. Генераторы в Python
  38. Логирование с Logzero
  39. Работа с прокси в Python
  40. Форматирование строк в Python
  41. Метод ne для сравнения объектов
  42. JSON в Python: модуль, dump, dumps, load
  43. Python Calendar Usage
  44. Подсчет элементов в Python

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