Курс 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. Цикл for с enumerate() в Python
  2. Печать в одной строке
  3. Работа с SQLite в Python
  4. Структурирование именованных констант
  5. Перебор элементов списка в Python
  6. Обработка элементов в Python
  7. Синхронизация доступа к ресурсам
  8. Генераторы данных
  9. Реализация операции -= для пользовательского класса
  10. Оптимизация памяти в Python
  11. Ограничение ресурсов в Python
  12. Перевод текста с Python Translator
  13. Работа с массивами в Numpy
  14. Копирование списков в Python
  15. Экспорт данных в файл.
  16. Динамические маршруты во Flask
  17. Декоратор проверки активности
  18. Оптимизация памяти с slots
  19. Метод split() в Python
  20. Поиск индексов подстроки
  21. Декораторы в Python
  22. Изменение объектов в Python
  23. Генераторные функции в Python
  24. Объединение списков в Python.
  25. Обучение модели с указанием эпох
  26. Тестирование с responses
  27. Генераторы в Python
  28. Метод join() для объединения элементов строки
  29. Аннотации типов в Python
  30. Тестирование функции сложения
  31. Декораторы с аргументами
  32. Управление асинхронными задачами с помощью Semaphore
  33. Разделение строки с помощью re.split()
  34. Создание уникального множества
  35. Роль object и type в Python
  36. Генераторы в Python
  37. Преобразование регистра символов
  38. Solidity для DeFi Ethereum
  39. Встраивание HTML в Jupyter Notebook
  40. Удаление знаков препинания в Python
  41. Создание директории в Python
  42. Работа с областями видимости переменных
  43. Управление доступом к модулю
  44. Модуль functools в Python
  45. Очистка данных с помощью pandas

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