Курс 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. Установка Git и AWS CLI
  3. discard() — удаление элемента из множества
  4. Сохранение Unicode в JSON
  5. Генераторные функции в Python
  6. Замыкания в Python
  7. Избегание изменяемых аргументов
  8. Flask: создание веб-приложений
  9. Оператор walrus в Python
  10. Оптимизация памяти с __slots__
  11. Комментарии в Python
  12. Работа с исключениями в Python
  13. Вложенные циклы в Python
  14. Операции с кортежами
  15. Возврат нескольких значений
  16. Присвоение значений переменным в Python
  17. Проверка переменных окружения в Python
  18. Расчет времени выполнения программы
  19. Python: отсутствие точек с запятыми
  20. Работа с модулем glob в Python
  21. Декодирование байтов в строку
  22. Измерение времени выполнения кода с использованием time
  23. Преобразование типов данных в set comprehension
  24. Шаблоны и наследование в Flask
  25. Сортировка в Python
  26. Метод join() для объединения элементов в строку.
  27. Python: Фильтрация списков с помощью filter()
  28. Combobox в Tkinter
  29. Отслеживание прогресса с tqdm
  30. Ускорение кода с помощью векторизации
  31. Библиотека sh: использование команд bash в Python
  32. Пропуск начальных строк с помощью dropwhile()
  33. Деление в Python
  34. Получение списка файлов в директории с использованием os
  35. Генераторы списков
  36. Создание новых списков в Python
  37. Логирование в Python
  38. Вызов внешних программ в Python с помощью sh
  39. Проверка типа объекта в Python
  40. Использование модуля math
  41. Цикл while в Python
  42. Изменение элемента списка
  43. Метод join() для объединения элементов
  44. Преобразование числа в список цифр
  45. Регулярные выражения: метод match
  46. Аннотации типов в Python
  47. Работа с множествами в Python
  48. Создание пар из последовательностей

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