Курс 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
  3. %pinfo: получение информации об объекте
  4. Установка максимального количества цифр
  5. 9 уловок для чистого кода
  6. Итерация по копии коллекции
  7. Модуль array: создание и использование массивов
  8. Настройка нарезки списков
  9. Метод pos в Python
  10. Импорт модулей в Python 3.12
  11. Поиск HTML-элементов с BeautifulSoup
  12. Управление памятью в numpy.
  13. Извлечение аудио из видео
  14. Сложные типы данных в Python
  15. Генераторы в Python
  16. Преобразование символов в нижний регистр
  17. Функция zip() — объединение последовательностей
  18. Работа с collections в Python.
  19. Обработка ошибок ввода данных
  20. Логический оператор «and» в Python
  21. Работа с массивами в Numpy
  22. Оператор обр. импликации
  23. Округление банкира в Python
  24. Счетчик ссылок в Python
  25. Работа с контекстным менеджером Pool
  26. Виртуальные среды в Python
  27. Работа с срезами в Python
  28. Создание и операции с дробями
  29. Разделение строки на пары ключ-значение.
  30. Удаление элементов во время итерации
  31. Создание файла с проверкой ошибки
  32. Работа с itertools
  33. Методы и функции в Python
  34. Метод bool() в Python
  35. Работа с датой и временем в Python
  36. Комплексные числа в Python
  37. Оператор распаковки в Python
  38. Создание коллекций из генератора
  39. Создание таблиц в Python с PrettyTable
  40. Присвоение значений переменным в Python
  41. Генерация тестовых данных с factory_boy
  42. Генераторы в Python
  43. Декораторы с @wraps
  44. Запуск внешнего кода в Jupyter
  45. Установка переменной среды в Python
  46. Работа с CSV файлами в Python
  47. Поиск наиболее частого элемента списке

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