Курс 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. Метод lt для сортировки объектов
  2. Установка и использование pyshorteners
  3. Модуль pprint
  4. Определение объема памяти объекта
  5. Основы работы со строками в Python
  6. Генератор списка в Python
  7. Работа с *args и **kwargs в Python
  8. Переопределение метода __rshift__
  9. Подсчет часто встречающихся элементов
  10. Игра «Виселица» на Python
  11. Импорт объектов из модулей
  12. Оператор continue в Python
  13. Транспонирование 2D-массива с помощью zip
  14. Новшества Flask 2.0
  15. Сравнение def и lambda функций в Python
  16. Функция eval() в Python
  17. Преобразование строк в числа с плавающей запятой
  18. Функция zip() в Python
  19. Возврат нескольких значений
  20. Анализ кода — Python
  21. Открытие, чтение и закрытие файла
  22. Генераторы списков в Python
  23. Работа с словарями в Python
  24. Howdoi — получение ответов из терминала
  25. Профилирование кода
  26. Beautiful Soup — извлечение данных из HTML
  27. Объединение списков с использованием itertools.chain
  28. Копирование и вставка текста в Python
  29. Python: библиотеки и функции
  30. Настройка шрифта и цвета в Tkinter
  31. Функции с необязательными аргументами
  32. Работа с комплексными числами
  33. Простой калькулятор Python
  34. Операторы += в Python
  35. Метод split() в Python
  36. Отрицательные индексы списков
  37. Объединение словарей в Python
  38. Исключение NotImplementedError
  39. Класс UserDict: дополнительная функциональность
  40. Модуль array: создание и использование массивов
  41. Работа с модулем bisect
  42. Работа с NumPy.linalg

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