Курс 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. Сумма элементов списка
  2. Функция enumerate() в Python
  3. Создание новых функций с помощью functools.partial
  4. Вакансии в Nebius
  5. Установка User-Agent в Python
  6. Функция с *args.
  7. Методы Python для работы с данными
  8. Обход элементов в Python
  9. Запуск файлового сервера
  10. Настройка нарезки списков
  11. Переворот строки с использованием цикла
  12. Протокол управления контекстом
  13. Удаление дубликатов с помощью множеств
  14. ChainMap.new_child() — добавление нового словаря
  15. Генератор бросков кубиков
  16. Progress с библиотекой tqdm
  17. Логические значения в Python
  18. Изменение элемента списка
  19. Хеширование паролей с солью
  20. Функция enumerate в Python
  21. Работа с кортежами в Python
  22. Метод join() для объединения элементов строки
  23. Проверка условий: all и any
  24. Модуль future Python
  25. Генераторы в Python
  26. Функция eval() в Python
  27. Возврат нескольких значений из функции
  28. Обработка исключения UnboundLocalError
  29. Многопроцессорное программирование в Python
  30. Функция rsplit() в Python
  31. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  32. Удаление первого элемента списка
  33. Операции с числами в Python
  34. Ветвление выражения в Python
  35. Распаковка аргументов в Python
  36. Гибкие функции Python
  37. Встроенные функции Python
  38. Python enumerate() функции
  39. Работа с Enum в Python3.
  40. Создание класса в Python
  41. Работа с часовыми поясами в Python
  42. Просмотр внешнего файла в Python
  43. Разрешение имен в Python
  44. Официальный канал Python в Telegram
  45. TypedDict для kwargs в Python 3.12

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