Курс 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
- ChainMap избыточные ключи
- Копирование в Python
- Работа с базами данных SQLite
- Измерение времени выполнения кода
- Цикл for с enumerate() в Python
- Преобразование символов с помощью map
- Форматирование строк в Python
- Подсчет частоты элементов с Counter
- Преобразование списка в словарь через генератор
- Инициализация объекта
- Объединение словарей в Python
- Работа с IP-адресами в Python
- Объединение словарей в Python
- Назначение максимального и минимального значения переменной в Python.
- Поиск индекса элемента
- Функции map, filter, reduce
- Проверка условий: all и any
- JSON в Python: модуль, dump, dumps, load
- Блок try…finally в Python
- Установка и использование pyshorteners
- Оператор морж в Python 3.8
- Работа с NumPy массивами
- Метод rmatmul для пользовательских матриц
- Статическая типизация в Python
- Функции any() и all() в Python
- Модуль itertools: эффективная работа с итераторами
- Создание словарей с defaultdict()
- Оператор in и not in в Python
- Python Метод sleep() времени
- Colorama: окрашивание текста в Python
- Разделение строки с помощью split()
- Работа со строками в Python
- Контроль точности вывода чисел
- Транспонирование 2D-массива с помощью zip
- Копирование объектов в Python
- Отделение звука от видео
- Декоратор защиты анонимных пользователей
- Работа с defaultdictами в Python
- Concrete Paths в Python
- Отладка производительности Python
- Переопределение метода __floordiv__
- Установка и обучение ChatterBot
- Функции all() и any() в Python
- Упрощение работы с JSON-данными в Python
- Получение пути к текущему скрипту с помощью os















