Курс Python → Python Аргументы по умолчанию
В Python аргументы по умолчанию могут быть изменяемыми значениями, такими как списки, словари или множества. Когда такой аргумент используется в функции, он сохраняет свое состояние между вызовами. Это означает, что если изменить значение аргумента внутри функции, это изменение будет сохранено и будет видно при следующем вызове функции. Например:
def add_item(item, items=[]):
items.append(item)
return items
print(add_item('apple')) # ['apple']
print(add_item('banana')) # ['apple', 'banana']
В приведенном примере функция add_item принимает элемент и добавляет его в список items. При первом вызове функции список items содержит только ‘apple’, но при следующем вызове ‘banana’ добавляется к списку. Это происходит потому, что список items сохраняет свое состояние между вызовами функции.
Однако следует быть осторожным при использовании изменяемых значений по умолчанию, так как они могут привести к неожиданным результатам. Если вы хотите, чтобы каждый вызов функции использовал новый объект для аргумента по умолчанию, лучше задать его как None и создать новый объект внутри функции. Например:
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item('apple')) # ['apple']
print(add_item('banana')) # ['banana']
В этом примере функция add_item проверяет, был ли передан аргумент items. Если нет, то создается новый пустой список. Таким образом, каждый вызов функции создает новый объект для аргумента items, избегая проблем с изменяемыми значениями по умолчанию.
Другие уроки курса "Python"
- Форматирование строк с % в Python
- Частичное совпадение пользовательского ввода в Python 3.10
- Генерация UUID в Python
- Concrete Paths — метод .with_suffix()
- Оператор объединения словарей
- Уникальные значения из списка
- Измерение времени выполнения кода с помощью time
- Метод difference_update() — разность множеств
- Запуск внешнего кода в Jupyter
- Оператор «is not» в Python
- Сложные типы данных в Python
- Оператор «and» в Python
- Управление асинхронными задачами на Python.
- Оценка точности модели
- Оператор «моржа» (Walrus Operator)
- Работа с контекстными менеджерами
- Лимиты на ресурсы Python
- Оператор «not» в Python
- Метод clear для коллекций
- Подписка на Kaspersky Team
- Объединение списков в строку
- Big O оптимизация
- Форматирование строк в Python.
- Аннотации типов в Python
- Работа с JSON данными в Python
- Проверка на палиндром
- Лямбда-функции в цикле
- Структура данных словарь в Python
- Модуль antigravity: генерация координат
- Измерение времени выполнения кода
- Списковые включения в Python
- Работа с файлами в Python
- Отношения подклассов в Python
- Создание словаря в Python
- Параллельные вычисления в Python
- Оператор морж в Python 3.8
- Решатель судоку на Python с pygame
- Принципы SRP и OCP
- Безопасный доступ к значениям словаря
- Блок else в Python
- Получение идентификатора объекта в памяти
- Работа с итераторами в Python
- Основные операции с библиотекой Numpy
- Строки в Python: апострофы и кавычки
- Работа с collections в Python.















