Курс 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. Поиск с библиотекой Google
  2. Оператор += в Python
  3. Печать комбинаций в Python с Itertools
  4. Метод __iand__ для пользовательских классов
  5. Область видимости переменных
  6. Python: изменяемые и неизменяемые коллекции
  7. Python: отсутствие точек с запятыми
  8. List Comprehension Tutorial
  9. Сравнение def и lambda функций в Python
  10. Вычисление фазы комплексного числа
  11. Python Поверхностное Копирование
  12. Работа со словарями в Python
  13. Обработка исключений с блоком else
  14. Поиск шаблона в строке
  15. Применение функции к списку
  16. Обход дочерних элементов BeautifulSoup
  17. Сортировка списка по индексам
  18. Инициализация переменных
  19. Избегание циклических зависимостей классов в Python
  20. Создание именованных кортежей в Python
  21. Выключение компьютера с помощью Python
  22. Цепные операции в Python
  23. Отладка утечек памяти в Python
  24. Создание файла с проверкой ошибки
  25. Импорт в Python: список all
  26. Библиотека sh: удобные команды терминала
  27. Разрешение имен в Python
  28. Работа с zip()
  29. Просмотр файла в Jupyter Noteboo
  30. Функции с необязательными аргументами
  31. Метод Event.wait() в Python
  32. Отладка регулярных выражений в Python
  33. Имена объектов в Python
  34. Умножение строк и списков
  35. Создание списка через итерацию
  36. Тестирование с unittest
  37. Изменяемые и неизменяемые объекты
  38. Оператор морж в Python 3.8
  39. Область видимости переменных
  40. Нахождение пересечения множеств
  41. Преобразование range в итератор
  42. Конвертация текстовых чисел с помощью Numerizer
  43. Настройка логгера Logzero
  44. Необязательные аргументы в Python
  45. Логирование с Loguru
  46. Создание Telegram-бота на Python

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