Курс 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"
- Оператор (*) в Python
- Отладка утечек памяти в Python
- Метод radd для пользовательских чисел
- Класс Counter() для подсчета элементов
- Оператор морж в Python 3.8
- Работа с массивами в Numpy
- Работа с IP-адресами в Python
- Перебор элементов списка в Python
- Метод Self в Python
- Копирование и вставка текста в Python
- Метод enumerate() в Python
- Склеивание строк без циклов
- Каналы Senior: Python, Java, Frontend, SQL, C++
- Доступ к локальным переменным
- Модуль Antigravity в Python 3
- Функции в Python: создание и вызов
- Создание и использование ChainMap
- Переопределение метода divmod
- Метод lt для сортировки объектов
- Переопределение оператора % для объектов
- Оценка выражений генератора в Python
- Метод enumerate() в Python
- Декораторы в Python
- Определение размера папок в Python
- Метод __irshift__ для побитового сдвига вправо
- Хеши в Python
- Обязательные аргументы в Python
- Pillow: работа с изображениями
- Оболочка Python
- Numpy: разбиение массивов
- Переопределение метода __pow__
- Фильтрация списка чисел
- Генератор списка в Python
- Измерение времени выполнения кода
- Методы split() и join() — Python строк.
- Переменные в Python
- Методы и функции в Python
- Вычисление фазы комплексного числа
- Работа с модулем os в Python
- Python OrderedDict и fromkeys() — работа с словарями
- Управление сессиями в Python
- Атрибуты класса и экземпляра















