Курс 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. Python groupby() из itertools: работа с повторяющимися элементами
  2. Удаление пробелов методом translate()
  3. Вакансии в Nebius
  4. Функции range() в Python
  5. Печать месячного календаря
  6. Python Ellipsis использование
  7. Defaultdict в Python
  8. Округление чисел с помощью round
  9. Замена символов в строке
  10. Цикл for в Python
  11. Работа с множествами в Python
  12. Ключевое слово global в Python
  13. Инициализация структур данных
  14. Извлечение чисел из текста
  15. Модуль pprint: улучшение вывода данных
  16. Функции-генераторы в Python
  17. Обработка элементов в Python
  18. Принципы программирования
  19. Работа с пользовательским вводом
  20. Создание объекта timedelta
  21. Поиск email
  22. Удаление файлов и папок в Python
  23. Настройка шрифта и цвета в Tkinter
  24. Изучение объектов с помощью dir()
  25. Получение списка файлов в директории с использованием os
  26. Область видимости переменных
  27. Метод is_absolute() для PurePath
  28. Работа с асинхронными задачами в Python
  29. Howdoi — получение ответов из терминала
  30. Сортировка данных с лямбда-функциями
  31. Получение локальных переменных в Python
  32. Создание новых списков через list comprehensions
  33. Функция rsplit() в Python
  34. Python enumerate() для работы с индексами
  35. Оператор zip в Python
  36. Метод __iand__ для пользовательских классов
  37. Генераторы в Python
  38. Оператор in и not in в Python
  39. Оценка точности модели
  40. Работа со строками в Python
  41. Реверс строки и списка в Python.
  42. Работа с deque из collections
  43. Использование html-скриптов в Jupyter Notebook
  44. Извлечение аудио из видео
  45. Оператор Walrus: правильное использование
  46. Создание функций высшего порядка

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