Курс 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. Удаление falsy-значений из списка с помощью filter
  2. Работа с асинхронными задачами в Python
  3. Сортировка в Python
  4. Философия Python
  5. 9 уловок для чистого кода
  6. Возврат нескольких значений
  7. Создание копии списка в Python
  8. Сравнение def и lambda-функций
  9. Метод splitlines() для разделения строк
  10. PrettyTable: создание таблицы
  11. Печать календаря в Python
  12. Магические методы в Python
  13. Подсчет вхождений элементов
  14. Абстракции словарей и множеств в Python
  15. Переопределение метода __or__()
  16. Генераторы списков в Python
  17. Извлечение статей с newspaper3k
  18. Сортировка с помощью параметра key
  19. Асинхронное выполнение задач в процессах
  20. Форматирование строк с помощью f-строк
  21. Подсчет частоты элементов с Counter
  22. Метод matmul для умножения матриц
  23. Фильтрация данных в Python.
  24. Измерение времени выполнения кода
  25. Вывод символов строки в Python
  26. Генераторы в Python
  27. Управление виртуальными окружениями в Python
  28. Основы слова
  29. Создание функций с произвольным количеством аргументов
  30. Операторы объединения в Python 3.9
  31. Поиск повторов в списке
  32. Метод __getitem__ в Python
  33. Оператор «not» в Python
  34. Проверка наличия элемента в списке
  35. Разработка Telegram-ботов
  36. Оператор continue в Python
  37. Резервирование символов в Python
  38. Ускорение выполнения кода в Python
  39. Игра «Виселица» на Python
  40. Объединение списков с помощью zip
  41. Создание класса очереди
  42. Установка и использование библиотеки google
  43. Удаление дубликатов из списка с помощью dict.fromkeys
  44. Генератор списка в Python

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