Курс 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"
- Определение индекса элемента списка
- Установка Git и AWS CLI
- discard() — удаление элемента из множества
- Сохранение Unicode в JSON
- Генераторные функции в Python
- Замыкания в Python
- Избегание изменяемых аргументов
- Flask: создание веб-приложений
- Оператор walrus в Python
- Оптимизация памяти с __slots__
- Комментарии в Python
- Работа с исключениями в Python
- Вложенные циклы в Python
- Операции с кортежами
- Возврат нескольких значений
- Присвоение значений переменным в Python
- Проверка переменных окружения в Python
- Расчет времени выполнения программы
- Python: отсутствие точек с запятыми
- Работа с модулем glob в Python
- Декодирование байтов в строку
- Измерение времени выполнения кода с использованием time
- Преобразование типов данных в set comprehension
- Шаблоны и наследование в Flask
- Сортировка в Python
- Метод join() для объединения элементов в строку.
- Python: Фильтрация списков с помощью filter()
- Combobox в Tkinter
- Отслеживание прогресса с tqdm
- Ускорение кода с помощью векторизации
- Библиотека sh: использование команд bash в Python
- Пропуск начальных строк с помощью dropwhile()
- Деление в Python
- Получение списка файлов в директории с использованием os
- Генераторы списков
- Создание новых списков в Python
- Логирование в Python
- Вызов внешних программ в Python с помощью sh
- Проверка типа объекта в Python
- Использование модуля math
- Цикл while в Python
- Изменение элемента списка
- Метод join() для объединения элементов
- Преобразование числа в список цифр
- Регулярные выражения: метод match
- Аннотации типов в Python
- Работа с множествами в Python
- Создание пар из последовательностей















