Курс 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. Установка и обучение ChatterBot
  2. Работа с изображениями Pillow
  3. Реализация метода __abs__ в Python
  4. Округление дробей в Python
  5. Особенности множеств в Python
  6. Генератор данных в Keras
  7. Абстракции словарей и множеств в Python
  8. Модуль os: работа с файлами и папками
  9. Избегайте использования goto
  10. Метод __iand__ для пользовательских классов
  11. Разработка Telegram-ботов
  12. Создание словаря и множества
  13. Группировка элементов в словарь
  14. Обработка исключений
  15. Генераторы в Python
  16. Метод Event.wait() в Python
  17. Метод rmatmul для пользовательских матриц
  18. Работа с прокси в Python
  19. Декораторы в Python
  20. Логирование в Python
  21. Метод ne для сравнения объектов
  22. Ошибка NotImplemented в Python
  23. Переопределение метода __lshift__
  24. Преобразование Excel в PDF с Spire.XLS
  25. Методы обработки строк в Python
  26. Различия символов в Python
  27. Обмен переменными в Jupyter
  28. Использование функции enumerate()
  29. Генераторы в Python
  30. Преобразование в float
  31. Анонимные функции Lambda
  32. Работа с JSON в Python
  33. Функции all и any в Python
  34. Просмотр атрибутов и методов класса
  35. Непрерывная проверка в Python
  36. Использование модуля math
  37. Решение переменной Шредингера
  38. Оператор умножения для вектора
  39. Комментарии в Python
  40. Метод eq для сравнения объектов
  41. Работа с OpenCV
  42. Роль object и type в Python
  43. Проверка типов с использованием isinstance
  44. Оформление кода по PEP 8
  45. Управление User-Agent в Python
  46. Пространство имен в Python
  47. Множественное наследование в Python

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