Курс 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
- Быстрый поиск кода
- Работа с кортежами в Python
- Конкатенация списков в Python
- Обработка исключений в Python
- Возврат нескольких значений
- Работа с часовыми поясами в Python
- Получение значений из словарей
- Лямбда-функции в Python
- Измерение времени выполнения кода
- Нарезка списков в Python
- Разделение строки с регулярными выражениями
- Логические операторы в Python
- Модуль Operator в Python
- Список и кортеж в Python
- Руководство по использованию Colorama
- Подчеркивание в REPL
- Объединение словарей в Python
- Поиск частых элементов в списке
- Библиотека funcy: удобные утилиты
- Метод rpow в Python
- Срез в Python
- Преобразование Word в PDF с Spire.Doc
- Проверка индексов коллекции
- Операции с массивами в NumPy
- Библиотека Rich: форматирование текста
- Вывод переменной и строки в Python
- Константы в модуле cmath
- Работа с итераторами в Python
- Обработка исключений в Python
- Объединение, распаковка и деструктуризация
- Переменная с нижним подчеркиванием
- Очистка данных с помощью pandas
- Работа с коллекциями Python
- Шаблоны Flask: условия и циклы
- Метод is_absolute() для PurePath
- Работа с временем в Python
- Структура данных словарь в Python
- Работа с множествами в Python
- Работа со строками в Python.
- Работа с массивами в Numpy















