Курс 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"
- Создание namedtuple списком полей
- Работа со словарями в Python
- Оптимизация сравнения в Python
- Очистка строки в Python
- Логирование в Python
- Запуск асинхронной корутины
- Сериализация и десериализация объектов
- Работа с итераторами через срезы
- Сортировка с помощью key
- Типы возвращаемых значений в Python
- Операции с матрицами в Python
- Непрерывная проверка в Python
- Работа с парами ключ-значение
- Список переменных в Python
- Анонимные функции в Python
- Копирование словарей и списков в Python
- Функции map() и reduce() в Python
- Перемещение и удаление файлов в Python
- Логические значения в Python
- Операции со строками в Python
- Переопределение метода divmod
- Преобразование в float
- Создание коллекций из генератора
- Регистрация на курсы SF Education
- Работа со стеком в Python
- Concrete Paths — метод .with_suffix()
- Цепные операции в Python
- Работа с областями видимости переменных
- Проверка условий в Python
- Списковое включение в Python
- Управление ресурсами с контекстными менеджерами
- Отрицательные индексы списков в Python
- Monkey Patching в Python
- Оптимизация методов в Python 3.7
- Декораторы в Python
- Хранение переменных в словаре.
- Распаковка аргументов в Python
- Присвоение значений переменным в Python
- Работа с Telegram API на Python
- Транспонирование 2D-массива с помощью zip
- Создание таблиц в терминале с PrettyTable
- Ограничение итераций в Python
- Преобразование текста в речь с Python















