Курс 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. Декораторы в Python
  4. Быстрый поиск кода
  5. Работа с кортежами в Python
  6. Конкатенация списков в Python
  7. Обработка исключений в Python
  8. Возврат нескольких значений
  9. Работа с часовыми поясами в Python
  10. Получение значений из словарей
  11. Лямбда-функции в Python
  12. Измерение времени выполнения кода
  13. Нарезка списков в Python
  14. Разделение строки с регулярными выражениями
  15. Логические операторы в Python
  16. Модуль Operator в Python
  17. Список и кортеж в Python
  18. Руководство по использованию Colorama
  19. Подчеркивание в REPL
  20. Объединение словарей в Python
  21. Поиск частых элементов в списке
  22. Библиотека funcy: удобные утилиты
  23. Метод rpow в Python
  24. Срез в Python
  25. Преобразование Word в PDF с Spire.Doc
  26. Проверка индексов коллекции
  27. Операции с массивами в NumPy
  28. Библиотека Rich: форматирование текста
  29. Вывод переменной и строки в Python
  30. Константы в модуле cmath
  31. Работа с итераторами в Python
  32. Обработка исключений в Python
  33. Объединение, распаковка и деструктуризация
  34. Переменная с нижним подчеркиванием
  35. Очистка данных с помощью pandas
  36. Работа с коллекциями Python
  37. Шаблоны Flask: условия и циклы
  38. Метод is_absolute() для PurePath
  39. Работа с временем в Python
  40. Структура данных словарь в Python
  41. Работа с множествами в Python
  42. Работа со строками в Python.
  43. Работа с массивами в Numpy

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