Курс 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"
- Работа с zip()
- Искажение имен в Python
- Сортировка и обратный порядок
- Метод count() для списков
- Функция reduce() из модуля functools
- Замена текста в Python
- Принципы LSP и ISP в Python
- Создание OrderedDict
- Генератор надежных паролей
- Форматирование строк в Python
- Инверсия списков и строк в Python
- Генерация случайных чисел Python
- Сокращение ссылок с pyshorteners
- Создание копии итератора
- Добавление элемента в список.
- Синхронизация доступа к ресурсам
- Переворот последовательности
- Строковое представление объектов
- Работа с модулем random
- Различия символов в Python
- Генерация QR-кодов с библиотекой qrcode
- Классы данных в Python
- Функция zip() в Python
- capitalize() — изменение регистра первого символа строки
- Работа с f-строками 2.0
- Утечки переменных цикла в Python 3.x
- Python: изменяемые и неизменяемые коллекции
- Множественное наследование в Python
- Генераторы в Python
- Именование переменных в Python
- Объединение словарей в Python 3.5+
- Обработка исключений в Python
- Работа с атрибутом dict
- Проверка подстроки в строке с помощью in
- Очистка списка от False, None, 0, «»
- Переворот строки
- Перегрузка операторов в Python
- Bootle — простой веб-фреймворк
- Форматирование строк в Python
- Оптимизация строк в Python
- Генераторы в Python
- Преобразование Word в PDF с Spire.Doc
- Обработка StopIteration в Python
- Создание функций с произвольным количеством аргументов
- Работа с датами в Python
- Динамическая типизация в Python
- Оператор распаковки в Python















