Курс 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"
- Установка и обучение ChatterBot
- Работа с изображениями Pillow
- Реализация метода __abs__ в Python
- Округление дробей в Python
- Особенности множеств в Python
- Генератор данных в Keras
- Абстракции словарей и множеств в Python
- Модуль os: работа с файлами и папками
- Избегайте использования goto
- Метод __iand__ для пользовательских классов
- Разработка Telegram-ботов
- Создание словаря и множества
- Группировка элементов в словарь
- Обработка исключений
- Генераторы в Python
- Метод Event.wait() в Python
- Метод rmatmul для пользовательских матриц
- Работа с прокси в Python
- Декораторы в Python
- Логирование в Python
- Метод ne для сравнения объектов
- Ошибка NotImplemented в Python
- Переопределение метода __lshift__
- Преобразование Excel в PDF с Spire.XLS
- Методы обработки строк в Python
- Различия символов в Python
- Обмен переменными в Jupyter
- Использование функции enumerate()
- Генераторы в Python
- Преобразование в float
- Анонимные функции Lambda
- Работа с JSON в Python
- Функции all и any в Python
- Просмотр атрибутов и методов класса
- Непрерывная проверка в Python
- Использование модуля math
- Решение переменной Шредингера
- Оператор умножения для вектора
- Комментарии в Python
- Метод eq для сравнения объектов
- Работа с OpenCV
- Роль object и type в Python
- Проверка типов с использованием isinstance
- Оформление кода по PEP 8
- Управление User-Agent в Python
- Пространство имен в Python
- Множественное наследование в Python















