Курс 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. Модуль antigravity: генерация координат
  3. Обход элементов в Python
  4. Логирование с Loguru
  5. Создание панели меню Tkinter
  6. Операции с комплексными числами
  7. Библиотека Chartify: руководство
  8. Работа с аргументами командной строки в Python
  9. Принципы LSP и ISP в Python
  10. Метод join для наборов
  11. Поиск индексов подстроки
  12. Переопределение унарных операторов
  13. Активация Matplotlib в Jupyter
  14. Иерархия классов в Python
  15. Обработка исключений с блоком else
  16. Списки: объединение, изменение
  17. Многоточие в Python
  18. Декораторы в Python
  19. Работа с кортежами в Python
  20. Сравнение def и lambda в Python
  21. Создание именованных кортежей в Python
  22. Избегание изменяемых аргументов
  23. Печать в одной строке
  24. Разделение строки в Python
  25. Метод count в Python: почему count(», ») возвращает 4?
  26. Создание новых функций с помощью functools.partial
  27. Игра «Угадывание чисел»
  28. Вычисление натуральных логарифмов в NumPy
  29. Множества и frozenset
  30. Метод get() для словарей
  31. Работа с OpenCV
  32. Генерация UUID в Python
  33. Операции с матрицами в Python
  34. Декоратор total_ordering для сравнения объектов
  35. Использование type hints
  36. Фильтрация данных в Python.
  37. Атрибуты класса и экземпляра в Python
  38. Значения по умолчанию в Python
  39. Кортеж в Python: создание и использование
  40. Генератор списка с условием if
  41. Хранение переменных в словаре.
  42. Именованные аргументы в Python
  43. Метод lt для сортировки объектов
  44. Работа с рекламными данными в Pandas
  45. Отладка в Python
  46. Работа со словарями в Python
  47. Переопределение метода sub
  48. Метод radd для пользовательских чисел

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