Курс 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"
- Обучение модели с указанием эпох
- Модуль antigravity: генерация координат
- Обход элементов в Python
- Логирование с Loguru
- Создание панели меню Tkinter
- Операции с комплексными числами
- Библиотека Chartify: руководство
- Работа с аргументами командной строки в Python
- Принципы LSP и ISP в Python
- Метод join для наборов
- Поиск индексов подстроки
- Переопределение унарных операторов
- Активация Matplotlib в Jupyter
- Иерархия классов в Python
- Обработка исключений с блоком else
- Списки: объединение, изменение
- Многоточие в Python
- Декораторы в Python
- Работа с кортежами в Python
- Сравнение def и lambda в Python
- Создание именованных кортежей в Python
- Избегание изменяемых аргументов
- Печать в одной строке
- Разделение строки в Python
- Метод count в Python: почему count(», ») возвращает 4?
- Создание новых функций с помощью functools.partial
- Игра «Угадывание чисел»
- Вычисление натуральных логарифмов в NumPy
- Множества и frozenset
- Метод get() для словарей
- Работа с OpenCV
- Генерация UUID в Python
- Операции с матрицами в Python
- Декоратор total_ordering для сравнения объектов
- Использование type hints
- Фильтрация данных в Python.
- Атрибуты класса и экземпляра в Python
- Значения по умолчанию в Python
- Кортеж в Python: создание и использование
- Генератор списка с условием if
- Хранение переменных в словаре.
- Именованные аргументы в Python
- Метод lt для сортировки объектов
- Работа с рекламными данными в Pandas
- Отладка в Python
- Работа со словарями в Python
- Переопределение метода sub
- Метод radd для пользовательских чисел















