Курс 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"
- Отрицательные индексы списков в Python
- Логические операторы в Python
- Оптимизация создания строк
- Статическая типизация в Python
- Поиск индекса элемента в списке
- Кортежи в Python: особенности и преимущества
- Оператор continue в Python
- Функция enumerate в Python
- Подписка на SelectelNews в Twitter
- Аннотации типов в Python
- Вычисление натуральных логарифмов в NumPy
- Выражения-генераторы в Python
- Работа с zip()
- Работа с набором данных CIFAR10 в PyTorch
- Класс-оболочка для словарей
- Удаление дубликатов с помощью множеств
- Работа с timedelta в Python
- Обмен значений переменных в Python
- Метод difference_update() — разность множеств
- Перезагрузка оператора в Python
- Генераторные функции в Python
- Отслеживание выполнения программы с библиотекой tqdm
- Генерация случайных чисел в Python
- Создание namedtuple списком полей
- Методы split() и join() — Python строк.
- Форматирование данных с помощью pprint
- Работа с GitHub в Telegram
- Обработка ошибок в Python
- Итераторы в Python
- Форматирование строк в Python
- Удаление элемента из списка в Python
- Приоритет операций в Python
- Декораторы в Python
- Методы работы со строками в Python
- Метод __getitem__ в Python
- Метод __iand__ для пользовательских классов
- Гибкие функции Python
- Встраивание HTML в Jupyter Notebook
- Работа с парами ключ-значение
- Реализация метода __abs__ в Python
- Профилирование кода
- Печать списка с помощью метода join
- Метод split() в Python
- Функции классификации комплексных чисел
- Метод pos в Python
- Управление доступом к модулю















