Курс 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"
- Печать календаря
- Мониторинг памяти с Pympler
- Возвращение нескольких значений через кортеж или класс
- Карта бомбоубежищ в Москве и Питере
- Установка и использование модуля Wikipedia
- Цикл for в Python
- Удаление дубликатов из списка
- Подсчет элементов в Python
- Метод ifloordiv для пользовательских классов
- Изменяемые и неизменяемые объекты
- Управление ресурсами в Python
- Работа со строками в Python
- Поиск кода
- Копирование объектов в Python
- Исключение NotImplementedError
- Обработка исключений в Python
- Инициализация объекта
- Анонимные функции в Python
- Обход элементов в Python
- Определение имен функций
- Атрибуты класса и экземпляра в Python
- Работа с deque в Python
- Возврат нескольких значений
- Работа с кортежами в Python
- Python defaultdict добавление ключа
- Метод rrshift для пользовательских объектов
- Методы list в Python
- Возврат нескольких значений из функции
- Обработка исключений в Python
- Методы split() и join() — Python строк.
- Игра «Угадывание чисел»
- Циклы в Python
- Скачать видео с YouTube
- Назначение максимального и минимального значения переменной в Python.
- Присвоение значений переменным в Python
- Форматирование строк в Python.
- Изменение элемента списка
- Конвертация коллекций в Python
- Antigravity модуль
- Модуль subprocess: запуск внешних команд
- Определение объема памяти объекта
- Метод rmatmul для обратного матричного умножения
- Избегайте двойного подчеркивания
- Howdoi — получение ответов из терминала















