Курс 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. Работа с CSV в Python
  3. Преобразование строки в число
  4. Установка виртуального окружения Python
  5. Векторизация в Python с NumPy.
  6. Оценка точности модели
  7. Вычисление натуральных логарифмов в NumPy
  8. Выбор редактора кода.
  9. Управление памятью в numpy.
  10. Генерация случайных данных в NumPy
  11. Замена атрибута в именованном кортеже
  12. Глобальные переменные в Python
  13. Создание новых списков в Python
  14. Создание словаря в Python
  15. Работа с файлами в Python
  16. Удаление элементов из списка в Python.
  17. Декоратор для группы пользователей в Django
  18. Курс Data Scientist в медицине
  19. Структура данных deque в Python
  20. Переменная Шредингера
  21. HTTP-запросы с библиотекой Requests
  22. Работа со словарями с defaultdict из collections
  23. Метод __index__ в Python
  24. Константы в модуле cmath
  25. Defaultdict в Python
  26. Вывод переменной и строки в Python
  27. Обработка исключений в Python
  28. GitHub в Telegram: подписка на уведомления
  29. Обмен значений переменных в Python
  30. Применение функции map() в Python
  31. Метод сравнения объектов в Python
  32. Модуль inspect
  33. Сортировка с помощью key
  34. Поток данных в Python
  35. Динамическая типизация в Python
  36. Любовь к Python
  37. Python: изменяемые и неизменяемые коллекции
  38. Создание функций высшего порядка
  39. Метод join() для объединения элементов строки
  40. Нахождение хеша для бесконечности и NaN в Python
  41. Извлечение данных из JSON
  42. Метод ne для сравнения объектов
  43. Поиск с библиотекой Google
  44. Метод rpow в Python
  45. Многострочные строки в Python
  46. Счетчик ссылок в Python
  47. Работа со строками в Python

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