Курс 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. Зарезервированные слова в Python
  4. Профилирование данных с Pandas.
  5. Перевод эмодзи и эмотиконов.
  6. Объединение строк с помощью метода join
  7. Python Calendar Usage
  8. Установка и использование pyshorteners
  9. Курсы Яндекс Практикум
  10. Генераторы в Python
  11. Вычисление натурального логарифма в NumPy
  12. Роль запятой в Python
  13. Удаление ресурса в Python
  14. Python union() функция — объединение множеств
  15. Инвертирование словаря
  16. Генерация тестовых данных с factory_boy
  17. Работа с NumPy массивами
  18. Удаление элементов из списка в Python
  19. Установка пакета в Python
  20. Работа с комплексными числами
  21. Лямбда-функции для min/max
  22. Генераторы в Python
  23. Удаление файлов с shutil.os.remove()
  24. Запуск асинхронной корутины
  25. Установка и использование emoji
  26. Python enumerate() для работы с индексами
  27. Retrying в Python: повторные вызовы
  28. Анализ текста на русском языке с помощью Pymystem3
  29. Работа с модулем random
  30. Перемещение и удаление файлов в Python
  31. Расчет времени выполнения
  32. ChainMap.new_child() — добавление нового словаря
  33. Удаление и повторная вставка ключа в OrderedDict
  34. Преобразование числа в список цифр
  35. Считывание бинарного файла в Python
  36. Взаимодействие с sys
  37. Список и кортеж в Python
  38. Работа с модулем Calendar
  39. PEP-401: оператор
  40. Вычисление логарифмов в Python
  41. Работа с часовыми поясами в Python
  42. Генераторы списков в Python
  43. Работа с географическими данными.
  44. Импорт модулей в Python 3.12
  45. Мониторинг работы программы Py-spy
  46. Генераторы и сеты в Python
  47. Методы classmethod и staticmethod

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