Курс 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"
- Функция reversed() в Python
- Управление пакетами с pip
- Python Метод sleep() из time
- Роль object и type в Python
- Генератор списка в Python
- Установка Home Assistant
- Печать календаря
- Основы работы с os
- Оформление кода по PEP 8
- Отображение графиков в Jupyter с Matplotlib
- Работа с Event() в threading
- Обработка исключений в Python
- Особенности ключей словаря в Python
- Хэш-функции и метод цепочек
- Измерение времени выполнения кода
- Область видимости переменных
- Функция map() и ленивая оценка
- Отношения подклассов в Python
- Функция product() в Python
- Группировка элементов в словарь
- Генераторные функции в Python
- Именованные кортежи в Python
- Метод __iand__ для пользовательских классов
- Ошибка NotImplemented в Python
- Метод difference_update() — разность множеств
- Оператор обр. импликации
- Переменная с нижним подчеркиванием
- Множественное наследование в Python
- Генераторы и сеты в Python
- Модуль functools в Python
- Переворот строки
- capitalize() — изменение регистра первого символа строки
- Поиск шаблона в строке
- Проверка типов с помощью isinstance
- Проектирование Singleton с метаклассом
- Форматирование вывода с F-строками
- Использование функции product
- Метод split() для разделения строк
- Обратное распространение ошибки
- Векторизация в Python с NumPy.
- Путь к интерпретатору Python
- Сортировка с помощью параметра key
- Библиотека Chartify: руководство
- Циклы for в Python
- Многострочные комментарии в Python
- Частичное совпадение пользовательского ввода в Python 3.10















