Курс 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. Оператор «моржа» (Walrus Operator)
  2. Удаление дубликатов из списка с помощью dict.fromkeys
  3. Операторы присваивания в Python
  4. Декоратор для группы пользователей в Django
  5. Работа с timedelta
  6. Создание Telegram-бота на Python
  7. Переопределение метода len
  8. Список и кортеж в Python
  9. Встроенные функции Python
  10. Функция enumerate() — Python
  11. Множественное присваивание в Python
  12. Работа с коллекциями Python
  13. Работа с *args и **kwargs в Python
  14. Работа с эмодзи в Python
  15. Удаление первого элемента списка
  16. Генерация резюме в Gensim
  17. Декораторы в Python
  18. Удаление URL-адресов в Python
  19. Удаление файлов в Python
  20. Форматирование строк в Python
  21. Визуализация пропусков данных
  22. Изменяемые и неизменяемые объекты
  23. Работа с файлами в Python
  24. Синхронизация потоков с time.sleep()
  25. Методы list в Python
  26. Python 3.12: переиспользование кавычек
  27. Распаковка элементов последовательности
  28. Работа с словарями в Python
  29. Логирование с Loguru
  30. Поиск кода
  31. Метод pop() списка
  32. Методы в Python
  33. Оператор in и not in в Python
  34. Генерация случайных данных в NumPy
  35. Считывание бинарного файла в Python
  36. Проверка кортежей.
  37. Удаление символов новой строки в Python.
  38. Объявление переменных в Python
  39. Перезагрузка оператора в Python
  40. Метод join() для объединения элементов строки
  41. Перезапуск ячейки в Jupyter Notebook с dostoevsky

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