Курс 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"
- Лямбда-функции для min/max
- Поиск индекса элемента
- Подсчет вхождений элементов
- Цикл for в Python
- Печать календаря
- Объединение словарей в Python
- Приближение чисел в Python
- Принципы LSP и ISP в Python
- Операции со строками в Python
- Оператор is в Python
- Метод __ilshift__ для битового сдвига влево
- Проблема с изменяемыми аргументами
- Замыкания в Python
- Основные функции и модули Python
- Изменение IP-адреса в Python
- Работа с CSV файлами
- Структура данных deque в Python
- Оператор is в Python
- Возведение в квадрат с помощью itertools
- Наиболее частотные элементы с помощью Counter
- Команда %dhist — список посещенных каталогов
- Модуль xkcd: загрузка комиксов
- Принципы Zen Python
- Поиск уникальных элементов строкой в Python
- Преобразование многоуровневого словаря
- Ускорение кода с помощью векторизации
- Поиск файлов по шаблону
- Подписка на SelectelNews в Twitter
- Дефолтные параметры в Python
- Константы в модуле cmath
- Оптимизация методов в Python 3.7
- Основные методы NumPy
- Оператор объединения словарей
- Оператор @ для умножения матриц
- Множественное наследование в Python
- Установка библиотек в Python
- Работа со строками в Python
- Цикл for в Python
- Декораторы в Python
- Разница между датами
- Установка и использование Virtualenv
- Функция reduce() в Python
- Модуль os: работа с файлами и папками
- Работа с модулем random
- Python: отсутствие точек с запятыми
- Шаблоны и наследование в Flask
- Конвертация коллекций в Python
- Создание списка через итерацию
- Метод join() для объединения элементов















