Курс 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. Создание словаря и множества
  2. Monkey Patching в Python
  3. Метод remove() для удаления элемента из списка
  4. Python: возвращение нескольких значений
  5. Автоматизация действий с Pyautogui
  6. Определение размера папок в Python
  7. Присвоение и ссылки
  8. Округление дробей в Python
  9. Функции с необязательными аргументами
  10. Установка и использование howdoi
  11. Основы работы со строками в Python
  12. Отладка кода
  13. Отслеживание прогресса с tqdm
  14. Разница между датами
  15. Получение атрибутов и методов класса
  16. Генераторные выражения и islice.
  17. Работа с коллекциями Python
  18. Объединение словарей в Python
  19. Операторы увеличения и уменьшения в Python
  20. Хеширование паролей с использованием salt
  21. Декораторы с аргументами
  22. Проблема сравнения словарей
  23. Отслеживание выполнения программы с библиотекой tqdm
  24. Сравнение def и lambda функций в Python
  25. Метод join() для объединения строк
  26. Срезы в Numpy
  27. Удаление элементов по срезу
  28. Оператор «not» в Python
  29. Объединение, распаковка и деструктуризация
  30. Метод rename() для переименования файлов и каталогов
  31. Преобразование символов в нижний регистр
  32. Импорт модулей в Python 3.12
  33. Протокол управления контекстом
  34. Математические функции в Python
  35. Поиск наиболее частого элемента
  36. Обновление множества в Python
  37. Поиск шаблона в строке
  38. Отправка HTTP-запросов в Python
  39. Импорт в Python: список all
  40. Функции с дополнением
  41. Создание словарей и множеств в Python.

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