Курс 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"
- Оператор del в Python
- Операции с массивами в NumPy
- Генераторы в Python
- Присоединение элементов коллекции
- Форматирование данных с помощью pprint
- Комментарии в Python
- Генераторы в Python
- Concrete Paths — метод .with_suffix()
- Округление дробей в Python
- Фильтрация списка от «ложных» значений
- Создание списка дат
- Генераторы в Python
- Переопределение метода __floordiv__
- Протокол управления контекстом
- Переопределение метода __or__()
- Справка по импортированным модулям
- Возврат нескольких значений
- Изменение IP-адреса в Python
- Создание GUI с Tkinter: Entry
- Преобразование строки в число
- Генераторы списков в Python
- Магические методы в Python
- Проверка существования переменной с оператором :=
- Объединение объектов в Python
- Декоратор total_ordering для класса Point
- Названия столбцов в Python таблицах
- Создание множества в Python
- Управление экспортом элементов
- Оператор assert в Python
- Concrete Paths в Python
- Метод get() для словарей
- Объединение множеств в Python
- Метод setdefault() в Python
- Работа с словарями в Python
- Операторы увеличения и уменьшения переменной
- Переопределение метода __rshift__
- Функции высшего порядка в Python
- Глобальные переменные в Python
- Модуль functools в Python
- Функция map() и ленивая оценка
- Работа с файлами в Python
- Создание именованных кортежей в Python
- Оптимизация сравнения в Python
- Работа с timedelta
- Многострочные строки в Python
- Функция eval() в Python















