Курс 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. Расширение операции побитового «и» в Python
  2. Просмотр внешних файлов в %pycat
  3. Срез списка в Python
  4. Удаление знаков препинания в Python
  5. Проверка подстроки в строке с помощью in
  6. Создание коллекций из выражения-генератора
  7. Курс Data Scientist в медицине
  8. Метод rename() для переименования файлов и каталогов
  9. Отправка поздравлений по дню рождения
  10. Декодирование байтов в строку
  11. Переменные в Python: сокращение гласных
  12. Списки: объединение, изменение
  13. Хеширование паролей с солью
  14. Обратный список чисел
  15. Перемешивание списка с shuffle()
  16. Итерации в Python
  17. Оформление кода на Python
  18. Именованные аргументы в Python
  19. Установка виртуального окружения Python
  20. Работа с процессами в Python
  21. Удаление элементов из списка в Python.
  22. Декораторы в Python
  23. Ускорение выполнения кода в Python
  24. Работа с комбинациями в Python.
  25. Создание словарей и множеств в Python.
  26. Принципы программирования
  27. Применение функции к списку
  28. Обновление множества в Python
  29. PEP-401: оператор
  30. Управление контекстом с помощью декоратора contextmanager
  31. EMOT преобразование эмодзи в текст
  32. Преобразование строки в число
  33. Тестирование времени с Freezegun
  34. Метод lt для сортировки объектов
  35. Работа с базами данных SQLite
  36. Списковый компрехеншен.
  37. Поиск индексов подстроки
  38. Работа с CSV в Python
  39. Обратное распространение ошибки
  40. Создание и инициализация объектов
  41. Оболочка Python
  42. Аргумент по умолчанию
  43. Условное добавление элементов в список
  44. Управление импортом в Python
  45. Повторение элементов в Python
  46. Работа с байтовыми строками в Python
  47. Замена элементов в списке с помощью генераторов списков
  48. Группы исключений в Python

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