Курс 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"
- Метод lt для сортировки объектов
- Установка и использование pyshorteners
- Модуль pprint
- Определение объема памяти объекта
- Основы работы со строками в Python
- Генератор списка в Python
- Работа с *args и **kwargs в Python
- Переопределение метода __rshift__
- Подсчет часто встречающихся элементов
- Игра «Виселица» на Python
- Импорт объектов из модулей
- Оператор continue в Python
- Транспонирование 2D-массива с помощью zip
- Новшества Flask 2.0
- Сравнение def и lambda функций в Python
- Функция eval() в Python
- Преобразование строк в числа с плавающей запятой
- Функция zip() в Python
- Возврат нескольких значений
- Анализ кода — Python
- Открытие, чтение и закрытие файла
- Генераторы списков в Python
- Работа с словарями в Python
- Howdoi — получение ответов из терминала
- Профилирование кода
- Beautiful Soup — извлечение данных из HTML
- Объединение списков с использованием itertools.chain
- Копирование и вставка текста в Python
- Python: библиотеки и функции
- Настройка шрифта и цвета в Tkinter
- Функции с необязательными аргументами
- Работа с комплексными числами
- Простой калькулятор Python
- Операторы += в Python
- Метод split() в Python
- Отрицательные индексы списков
- Объединение словарей в Python
- Исключение NotImplementedError
- Класс UserDict: дополнительная функциональность
- Модуль array: создание и использование массивов
- Работа с модулем bisect
- Работа с NumPy.linalg















