Курс 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. Преобразование генераторов в циклы
  3. Преобразование чисел в Python
  4. Методы classmethod и staticmethod
  5. Метод append() для списка
  6. Создание и обучение модели с Keras
  7. Участие в сообществе @selectel
  8. Список и кортеж в Python
  9. Работа с путями в Python
  10. JSON-esque в Python
  11. Работа с контекстными переменными
  12. Обрезка изображения с Pillow
  13. Переворот списка в Python
  14. Манипуляция формой массива в Numpy
  15. Сериализация объектов в Python
  16. Переворот строки с помощью срезов
  17. Удаление URL-адресов в Python
  18. Непрерывная проверка в Python
  19. Секреты Python
  20. Работа с файлами в Python
  21. Именование переменных в Python
  22. Метод init в Python
  23. Создание и использование модулей в Python
  24. Оптимизация создания строк
  25. Сложные типы данных в Python
  26. Функция map() в Python
  27. Структуры данных в Python
  28. Модуль antigravity: генерация координат
  29. Импорт классов из другого файла
  30. Оценка точности модели
  31. Применение команды break
  32. Улучшенные подсказки для импорта в Python 3.12
  33. Метод get() в Python
  34. Округление чисел с помощью round
  35. Обезопасьте ввод данных
  36. Цикл for в Python
  37. Обмен значений переменных в Python
  38. Непрерывная проверка в Python
  39. Ограничение ресурсов в Python
  40. Progress с библиотекой tqdm
  41. Философия Python
  42. Циклы for в Python
  43. Работа с датами в Python
  44. Генерация случайных чисел в Python
  45. Работа с географическими данными в Python
  46. Управление пакетами с pip
  47. Создание панели меню Tkinter

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