Курс Python → Значения по умолчанию в Python

Значения по умолчанию в Python разделяются между объектами из-за того, что они создаются лишь однажды при определении функции. Это означает, что если значение по умолчанию является изменяемым объектом, таким как словарь, то все последующие вызовы функции будут использовать изменённый объект. Например, если у нас есть функция, которая принимает словарь в качестве значения по умолчанию, и мы изменяем этот словарь в одном вызове функции, то изменения будут сохранены для всех последующих вызовов.

С другой стороны, неизменяемые объекты, такие как числа, строки, кортежи и None, безопасны при изменении, так как они не могут быть изменены после создания. Поэтому значения по умолчанию, которые являются неизменяемыми объектами, будут оставаться неизменными для всех вызовов функции. Например, если значение по умолчанию — это число или строка, то оно не будет изменяться даже при изменении внутри функции.

Изменение изменяемых объектов, таких как словари, списки и экземпляры пользовательских классов, может привести к неожиданным последствиям. Поэтому при определении функций с изменяемыми значениями по умолчанию необходимо быть осторожным и учитывать, что изменения этих объектов будут видны для всех последующих вызовов функции.


def example_function(some_dict={}):
    some_dict['key'] = 'value'
    return some_dict

print(example_function())  # {'key': 'value'}
print(example_function())  # {'key': 'value'}

В данном примере функция example_function принимает словарь в качестве значения по умолчанию и добавляет в него пару ключ-значение. При вызове функции дважды мы видим, что изменения, внесенные в словарь, сохраняются для всех вызовов. Это происходит из-за того, что значение по умолчанию (пустой словарь) создается только один раз при определении функции и используется для всех вызовов.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Преобразование данных в Python
  2. Списки в Python: синтаксис представления
  3. Обработка ошибок в Python
  4. Работа с SQLite в Python
  5. Использование html-скриптов в Jupyter Notebook
  6. Игра «Виселица» на Python
  7. Именование переменных в Python
  8. Обработка исключений в Python
  9. Обработка элементов в Python
  10. Работа с утверждениями в Python
  11. Ввод нескольких значений
  12. Изменение элемента списка
  13. Создание списков в Python
  14. Оператор распаковки в Python
  15. Логирование с Loguru
  16. Переопределение метода sub
  17. Определение объема памяти объекта
  18. Управление контекстом выполнения
  19. Фильтрация элементов с помощью islice
  20. Проверка на палиндром
  21. Создание словарей в Python
  22. Оптимизация гиперпараметров с Scikit Optimize
  23. Создание новых списков в Python
  24. Работа со строками в Python
  25. Освоение Python
  26. Проверка условий: all и any
  27. Основные функции и модули Python
  28. Многопроцессорное программирование в Python
  29. Изменение списка срезом
  30. Работа со слайсами
  31. Конструктор в Python
  32. Декораторы в Python
  33. Расчет времени выполнения программы
  34. Python Calendar Usage
  35. Работа с файлами и директориями в Python.
  36. Управление ресурсами в Python
  37. Мониторинг работы программы Py-spy
  38. Beautiful Soup — извлечение данных из HTML
  39. Загрузка постов Instagram
  40. Форматирование объектов с модулем pprint
  41. Комментарии в Python.
  42. Python: отсутствие точек с запятыми

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