Курс 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. Цикл for в Python
  3. Работа с парами ключ-значение
  4. Многострочные строки в Python
  5. Оператор continue в Python
  6. Работа с deque из collections
  7. Запуск внешнего кода в Jupyter
  8. Обработка исключений в Python
  9. Метод rmatmul для обратного матричного умножения
  10. Моржовый оператор в Python 3.8
  11. Оптимизация сравнения в Python
  12. Исключение NotImplementedError
  13. Цикл for в Python
  14. Объединение списков в Python
  15. Создание матрицы в Python
  16. Получение размера объекта с sys.getsizeof()
  17. Работа с IP-адресами в Python
  18. Работа с процессами в Python
  19. Оператор обр. импликации
  20. Функции all() и any() в Python
  21. Создание вложенных циклов for
  22. Работа с геоданными с помощью geopy
  23. Сохранение и загрузка модели в PyTorch
  24. Класс UserDict: дополнительная функциональность
  25. Создание треугольника Паскаля
  26. Закрытие файла в Python
  27. Вакансии в Nebius
  28. Многопроцессорное программирование в Python
  29. Работа с комплексными числами
  30. Удаление элементов во время итерации
  31. Работа с zip()
  32. Методы и функции в Python
  33. Извлечение аудио из видео
  34. Сериализация и десериализация объектов
  35. Создание словарей и множеств в Python
  36. Применение функции map() с лямбда-функциями
  37. Передача словаря через **kwargs
  38. Заказ карты Тинькофф Black
  39. Метод pop() списка
  40. Проверка класса объекта
  41. Работа с WindowsPath()

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