Курс 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
- Профилирование данных с Pandas.
- Перевод эмодзи и эмотиконов.
- Объединение строк с помощью метода join
- Python Calendar Usage
- Установка и использование pyshorteners
- Курсы Яндекс Практикум
- Генераторы в Python
- Вычисление натурального логарифма в NumPy
- Роль запятой в Python
- Удаление ресурса в Python
- Python union() функция — объединение множеств
- Инвертирование словаря
- Генерация тестовых данных с factory_boy
- Работа с NumPy массивами
- Удаление элементов из списка в Python
- Установка пакета в Python
- Работа с комплексными числами
- Лямбда-функции для min/max
- Генераторы в Python
- Удаление файлов с shutil.os.remove()
- Запуск асинхронной корутины
- Установка и использование emoji
- Python enumerate() для работы с индексами
- Retrying в Python: повторные вызовы
- Анализ текста на русском языке с помощью Pymystem3
- Работа с модулем random
- Перемещение и удаление файлов в Python
- Расчет времени выполнения
- ChainMap.new_child() — добавление нового словаря
- Удаление и повторная вставка ключа в OrderedDict
- Преобразование числа в список цифр
- Считывание бинарного файла в Python
- Взаимодействие с sys
- Список и кортеж в Python
- Работа с модулем Calendar
- PEP-401: оператор
- Вычисление логарифмов в Python
- Работа с часовыми поясами в Python
- Генераторы списков в Python
- Работа с географическими данными.
- Импорт модулей в Python 3.12
- Мониторинг работы программы Py-spy
- Генераторы и сеты в Python
- Методы classmethod и staticmethod















