Курс 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. Применение команды break
  2. Обработка ошибки IndexError
  3. Функция zip() для объединения списков
  4. Удаление дубликатов из списка с помощью dict.fromkeys
  5. Форматирование данных с помощью pprint
  6. Обход элементов в Python
  7. Объединение списков с помощью zip
  8. Модуль subprocess: запуск внешних команд
  9. Метод rpow в Python
  10. Правила именования переменных
  11. Кортеж в Python: создание и использование
  12. Python Enum Weekday Usage
  13. Установка Git и AWS CLI
  14. Bootle — простой веб-фреймворк
  15. Каналы Senior: Python, Java, Frontend, SQL, C++
  16. Значения по умолчанию в Python
  17. Метод pos в Python
  18. Зарезервированные слова в Python
  19. Оператор in для Python
  20. Работа с пакетами
  21. Транспонирование матрицы
  22. Измерение времени выполнения
  23. Методы Python для работы с данными
  24. Метод join() для объединения элементов строки
  25. Проверка класса объекта
  26. Преобразование текста в речь с Python
  27. lru_cache оптимизация функций
  28. Проверка элемента в множестве.
  29. Сортировка элементов с OrderedDict
  30. Оператор «моржа» (Walrus Operator)
  31. Генераторы по генератору
  32. Python Translator: создание локальных переводчиков
  33. Обновление и получение данных в SQLite
  34. Передача аргументов через **arguments
  35. Асинхронный код в Python
  36. Работа со слайсами
  37. Метод index() в Python
  38. Обработка StopIteration в Python
  39. Преобразование Word в PDF с Spire.Doc
  40. Удаление элементов из списка в Python
  41. Переворот строки
  42. Генерация QR-кодов с библиотекой qrcode
  43. Метод split() для разделения строк
  44. Избегайте двойного подчеркивания
  45. Печать календаря в Python
  46. Округление в Python

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