Курс 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. None в Python: использование и особенности
  2. Определение основы слова с showballstemmer
  3. Создание коллекций из генератора
  4. Показ всплывающих окон Tkinter
  5. Проверка на истинность объектов в Python
  6. Множественные конструкторы в Python
  7. Создание GUI с Tkinter: Entry
  8. Генераторы списков
  9. Функция product() в Python
  10. Многострочные строки в Python
  11. Копирование в Python
  12. Оптимизация памяти с __slots__
  13. Переворот списка в Python
  14. Нахождение хеша для бесконечности и NaN в Python
  15. Модуль inspect: получение информации о объектах
  16. Генераторы списков в Python
  17. Работа с кортежами в Python
  18. Нан-рефлексивность в Python
  19. Переопределение метода __rshift__
  20. Генераторы данных
  21. Преобразование строки в число
  22. Генераторы списков в Python
  23. Проверка элементов списка условием
  24. Многострочные комментарии в Python
  25. Распаковка аргументов в Python
  26. Разделение строки на пары ключ-значение.
  27. Умножение строк и списков
  28. Секреты Python
  29. Замена переменных в Python
  30. Копирование файлов с shutil()
  31. Управление асинхронными задачами с помощью Semaphore
  32. Pretty-printing JSON в Python
  33. Операторы увеличения и уменьшения в Python
  34. Создание задания в Cron
  35. Запуск внешних программ с subprocess
  36. Создание списка дат
  37. Работа с контекстными переменными
  38. Изменение списка срезом
  39. Многопоточность и асинхронное программирование в Python
  40. Определение объема памяти объекта
  41. Множественное назначение в Python
  42. Декораторы в Python
  43. Python enumerate() использование
  44. Работа со строками
  45. Преобразование данных в Python
  46. Удаление элементов по срезу
  47. Проверка типов с помощью isinstance

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