Курс 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
- Объединение списков с использованием itertools.chain
- Замена текста с re.sub()
- Копирование объектов в Python
- Удаление дубликатов из списка
- Переворот строки
- Обработка данных в Python
- Объединение словарей в Python
- Переопределение метода __rshift__
- Введение в Python
- Поиск простых чисел
- Получение текущей директории
- Работа с изображениями PIL
- Defaultdict в Python
- Форматирование даты с strftime()
- Работа с библиотекой xkcd
- Функция print() — вывод информации
- Установка и использование emoji
- Создание графики с черепахой
- Бинарный поиск
- Аннотации типов в Python
- Проверка памяти объекта
- Работа с индексами списков
- Работа с NumPy
- Оператор * в Python
- Блок try…finally в Python
- Оператор is в Python
- Работа с zip()
- Присоединение элементов коллекции
- Структурирование данных с Pydantic
- Локальные переменные.
- Работа с очередями в Python
- Генераторы списков
- Генераторы в Python
- Логирование с Logzero
- Работа с прокси в Python
- Форматирование строк в Python
- Метод ne для сравнения объектов
- JSON в Python: модуль, dump, dumps, load
- Python Calendar Usage
- Подсчет элементов в Python















