Курс 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. Мониторинг работы программы Py-spy
  2. Установка и использование pyshorteners
  3. Создание объекта timedelta
  4. Объединение словарей в Python
  5. Установка и использование библиотеки google
  6. Повторение элементов в Python
  7. Частичное совпадение пользовательского ввода в Python 3.10
  8. Функция map() и ленивая оценка
  9. Создание виртуальной среды
  10. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  11. Модуль Antigravity в Python 3
  12. Переворот списка в Python
  13. Работа с NumPy
  14. Генераторы в Python
  15. Выражения-генераторы в Python
  16. Удаление ключа из словаря в Python
  17. Обработка исключений в Python
  18. Python: отличительная особенность — отступы
  19. Многопроцессорное программирование в Python
  20. Работа с файлами в Python
  21. Асинхронное программирование с asyncio
  22. Переворот строки с помощью срезов
  23. f-строки в формате строк
  24. Создание функций высшего порядка
  25. Контроль точности вывода чисел
  26. Объединение словарей в Python
  27. Инициализация объекта
  28. Лямбда-функции в Python
  29. Модуль subprocess: запуск внешних команд
  30. Методы работы со списками
  31. Вложенные генераторы в Python
  32. Освоение Python
  33. Проверка списка: any() и all()
  34. Операторы увеличения и уменьшения переменной
  35. Автоматизация скриптов на AWS Lightsail.
  36. Переопределение метода __pow__
  37. split() — разделение строки
  38. Фильтрация списков с itertools
  39. Обработка ошибок в Python
  40. Проверка условий в Python
  41. Различия символов в Python
  42. Применение команды break
  43. Применение функции к каждому элементу списка
  44. Преобразование текста в нижний регистр
  45. Отделение звука от видео
  46. Ограничение ресурсов в Python
  47. Сравнение неупорядоченных списков

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