Курс 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"
- Progress с библиотекой tqdm
- Непрерывная проверка в Python
- Удаление ключа из словаря в Python
- Оптимизация методов в Python 3.7
- Форматирование строк в Python
- Списковое включение в Python
- Применение команды break
- Проверка наличия элемента в списке
- Измерение потребления памяти при сортировке
- Роль ключевого слова self
- Условные выражения в Python
- Поиск индекса элемента
- Тестирование функции сложения
- Лямбда-функции для min/max
- Группы исключений в Python
- Декораторы в Python
- Работа с изображениями Pillow
- Создание новых списков в Python
- Измерение времени выполнения кода в Python
- Метод rmatmul для обратного матричного умножения
- Хешируемые ключи в Python
- Парсинг статей с Newspaper3k
- Проекты на Python
- Оператор += для объединения строк
- Обработка исключений в Python
- Изменение объектов в Python
- Исправление ошибки NameError
- Работа со стеком в Python
- Профилирование данных с Pandas.
- Модуль Antigravity в Python 3
- Удаление первого элемента списка
- Работа с collections в Python.
- Метод rsub в Python: расширение функциональности вычитания
- Лямбда-функции в Python
- Работа с переменными в Python
- Комментарии в Python
- Многоточие в Python
- Управление сессиями в Python
- Избегайте пустого списка
- Функция reduce() в Python
- Основные функции и модули Python
- Метод add для класса Vector
- Исключение NotImplementedError
- Работа с датой и временем в Python
- Эффективная конкатенация строк в Python















