Курс 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-dateutil
- Структура строк в Python
- Работа с комплексными числами
- Описание скриптов в README
- Повторение элементов списков
- PATCH-запрос с библиотекой requests
- Создание циклической ссылки
- Работа с OpenCV
- Удаление дубликатов с помощью множеств
- Возврат нескольких значений
- Генераторы в Python
- Метод __irshift__ для побитового сдвига вправо
- Оператор * в Python
- Работа с библиотекой xkcd
- Функция zip() — объединение последовательностей
- Создание графики с черепахой
- Сортировка с параметром key
- Python: отсутствие точек с запятыми
- Управление памятью в numpy.
- Операции со строками в Python
- Python 3.12: Псевдонимы типов
- Работа с WindowsPath()
- Хэш-функции в Python
- Сортировка с помощью key
- Сравнение def и lambda функций в Python
- Замер времени выполнения кода
- Регистрация на курсы SF Education
- Расчет времени выполнения программы
- Применение функции к элементам списка
- Объединение словарей в Python 3.5+
- Создание и использование модулей в Python
- Поиск всех индексов подстроки
- Создание уникального проекта
- Метод __ixor__ для побитового исключающего ИЛИ
- Стать Python-разработчиком
- Сортировка HTML по CSS-селектору
- Хешируемые ключи в Python
- Метод join() для объединения элементов в строку.
- Python Тесты и Гайды
- Передача аргументов в Python
- Установка и использование emoji
- Контроль точности вывода чисел
- Отслеживание прогресса с tqdm
- Форматирование кода на Python
- Эффективная конкатенация строк с использованием join()
- Метод join() для объединения строк
- Отступы в Python















