Курс 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"
- Скрытие вывода данных
- Цикл for в Python
- Работа с парами ключ-значение
- Многострочные строки в Python
- Оператор continue в Python
- Работа с deque из collections
- Запуск внешнего кода в Jupyter
- Обработка исключений в Python
- Метод rmatmul для обратного матричного умножения
- Моржовый оператор в Python 3.8
- Оптимизация сравнения в Python
- Исключение NotImplementedError
- Цикл for в Python
- Объединение списков в Python
- Создание матрицы в Python
- Получение размера объекта с sys.getsizeof()
- Работа с IP-адресами в Python
- Работа с процессами в Python
- Оператор обр. импликации
- Функции all() и any() в Python
- Создание вложенных циклов for
- Работа с геоданными с помощью geopy
- Сохранение и загрузка модели в PyTorch
- Класс UserDict: дополнительная функциональность
- Создание треугольника Паскаля
- Закрытие файла в Python
- Вакансии в Nebius
- Многопроцессорное программирование в Python
- Работа с комплексными числами
- Удаление элементов во время итерации
- Работа с zip()
- Методы и функции в Python
- Извлечение аудио из видео
- Сериализация и десериализация объектов
- Создание словарей и множеств в Python
- Применение функции map() с лямбда-функциями
- Передача словаря через **kwargs
- Заказ карты Тинькофф Black
- Метод pop() списка
- Проверка класса объекта
- Работа с WindowsPath()















