Курс Python → Проблема с изменяемыми аргументами
При написании функций в Python, одной из распространенных проблем является использование изменяемых типов данных в качестве аргументов по умолчанию. Это может привести к непредвиденным результатам, так как Python вычисляет значения по умолчанию для изменяемых типов только один раз — при создании функции. При последующих вызовах функции значение по умолчанию уже будет инициализировано и не будет изменяться.
Это означает, что если в функции вы используете изменяемый тип данных, например список или словарь, в качестве значения по умолчанию для аргумента, то при каждом последующем вызове функции это значение будет уже изменено и не будет соответствовать ожидаемому поведению.
Для избежания подобных проблем важно помнить, что при использовании изменяемых типов данных в аргументах по умолчанию, лучше инициализировать их внутри функции, а не при объявлении самой функции. Таким образом, каждый раз при вызове функции будет создаваться новый объект изменяемого типа данных и не будет конфликтов с предыдущими значениями.
def example_function(my_list=[]):
my_list.append(1)
return my_list
print(example_function()) # [1]
print(example_function()) # [1, 1]
В данном примере функция example_function использует список в качестве аргумента по умолчанию. При первом вызове функции список будет содержать один элемент [1]. Однако, при последующем вызове функции, список уже будет содержать два элемента [1, 1], так как значение по умолчанию изменилось после первого вызова.
Другие уроки курса "Python"
- Поиск индексов подстроки
- Метод сравнения объектов в Python
- Сглаживание списка
- Работа с файлами в Python
- Метод split() в Python
- Блок try…finally в Python
- Разность множеств
- Проверка памяти объекта
- Декораторы в Python
- Concrete Paths — метод .with_suffix()
- Оператор in для Python
- Flask — веб-фреймворк Python
- Работа с кортежами в Python
- JSON-esque в Python
- Управление асинхронными задачами на Python.
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Оператор del в Python
- Нахождение самого длинного слова в списке с помощью max
- Поиск шаблона в строке
- Тернарный оператор в Python
- Профилирование данных с Pandas
- Генераторы по генератору
- Сортировка в Python
- HTTP-запросы с библиотекой Requests
- Defaultdict в Python
- Склеивание строк через метод join()
- Генераторы в Python
- Копирование словарей и списков в Python
- Проверка версии Python
- Работа с множествами в Python
- Библиотека sh: использование команд bash в Python
- Преобразование строк в числа в Python
- Работа с IP-адресами в Python
- Получение обратного списка чисел
- Работа с getopt
- Метод setdefault() в Python
- Удаление дубликатов из списка с помощью dict.fromkeys
- Удаление пробелов методом translate()
- Сортировка данных с лямбда-функциями
- Python: динамическая типизация и проверка типов
- Навыки Python: строки, типы данных
- Метод get() для словарей
- Работа с контекстными переменными
- Метод __irshift__ для Python
- Динамические маршруты во Flask
- Логирование с Logzero
- Объединение словарей в Python
- Операции с датами в Python















