Курс 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
  2. Работа с типами данных в Python с помощью pydantic.
  3. Основные функции и модули Python
  4. Метод rpow в Python
  5. Статическая типизация в Python
  6. Измерение времени выполнения кода с использованием time
  7. Оператор деления для класса Rational
  8. Переменная Шредингера
  9. Разделение строки с помощью re.split()
  10. Преобразование букв в нижний регистр
  11. Поиск самого длинного слова в списке с использованием max()
  12. Поиск всех индексов подстроки
  13. Новшества Flask 2.0
  14. Обмен переменными в Jupyter
  15. Повторение элементов в Python
  16. Метод rsub в Python: расширение функциональности вычитания
  17. Форматирование заголовков в Python
  18. Логирование с Logzero
  19. Логические значения в Python
  20. Операции с датами в Python
  21. Основные операции с библиотекой Numpy
  22. Работа с изображениями PIL
  23. Разделение строк в Python
  24. Копирование и вставка текста в Python
  25. Удаление знаков препинания в Python
  26. Работа с YAML в Python
  27. Создание новой даты в Python
  28. Установка User-Agent в Python
  29. Обработка исключений с блоком else
  30. Методы classmethod и staticmethod
  31. Установка и обучение ChatterBot
  32. Защита данных в Python
  33. Хеширование паролей с использованием salt
  34. Проекты на Python
  35. Списки: объединение, изменение
  36. Метод append() для списка
  37. Метод setdefault() в Python
  38. Управление экспортом элементов
  39. Копирование списков в Python
  40. Генерация случайных чисел в Python
  41. Представление бесконечности в Python
  42. Настройка вывода в Numpy
  43. Транспонирование 2D-массива с помощью zip
  44. Создание новых списков в Python

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