Курс 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. Progress с библиотекой tqdm
  2. Непрерывная проверка в Python
  3. Удаление ключа из словаря в Python
  4. Оптимизация методов в Python 3.7
  5. Форматирование строк в Python
  6. Списковое включение в Python
  7. Применение команды break
  8. Проверка наличия элемента в списке
  9. Измерение потребления памяти при сортировке
  10. Роль ключевого слова self
  11. Условные выражения в Python
  12. Поиск индекса элемента
  13. Тестирование функции сложения
  14. Лямбда-функции для min/max
  15. Группы исключений в Python
  16. Декораторы в Python
  17. Работа с изображениями Pillow
  18. Создание новых списков в Python
  19. Измерение времени выполнения кода в Python
  20. Метод rmatmul для обратного матричного умножения
  21. Хешируемые ключи в Python
  22. Парсинг статей с Newspaper3k
  23. Проекты на Python
  24. Оператор += для объединения строк
  25. Обработка исключений в Python
  26. Изменение объектов в Python
  27. Исправление ошибки NameError
  28. Работа со стеком в Python
  29. Профилирование данных с Pandas.
  30. Модуль Antigravity в Python 3
  31. Удаление первого элемента списка
  32. Работа с collections в Python.
  33. Метод rsub в Python: расширение функциональности вычитания
  34. Лямбда-функции в Python
  35. Работа с переменными в Python
  36. Комментарии в Python
  37. Многоточие в Python
  38. Управление сессиями в Python
  39. Избегайте пустого списка
  40. Функция reduce() в Python
  41. Основные функции и модули Python
  42. Метод add для класса Vector
  43. Исключение NotImplementedError
  44. Работа с датой и временем в Python
  45. Эффективная конкатенация строк в Python

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