Курс 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"
- Отправка поздравлений по дню рождения
- Преобразование в float
- Изменение списка срезами
- UserString в Python
- Именованные кортежи в Python
- Функции all и any в Python
- Функция enumerate в Python
- Списки: объединение, изменение
- Именование столбцов в Python с pandas
- Скрытие вывода данных
- Создание уникального множества
- Повторение элементов в Python
- Профилирование данных с Pandas
- Выражения-генераторы в Python
- Создание матрицы в Python
- Генерация чисел с range()
- Преобразование Word в PDF с Spire.Doc
- Извлечение аудио из видео
- Комментарии в Python.
- Переворот списка в Python
- Цикл while в Python
- Оптимизация поиска в словарях
- Python Метод del.
- Импорт модулей в Python 3.12
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Дефолтные параметры в Python
- Генератор надежных паролей
- Форматирование строк в Python.
- Методы обработки строк в Python
- Создание списка через итерацию
- Работа с итераторами через срезы
- Вложенные генераторы в Python
- Преобразование списка в словарь через генератор
- Поиск наиболее частого элемента списке
- Управление ресурсами с контекстными менеджерами
- Фильтрация списка от «ложных» значений
- Повторение элементов списков
- Отступы в Python
- Monkey Patching в Python
- Область видимости переменных
- Блок else в обработке исключений
- Конвертация коллекций в Python.
- Python enumerate() использование
- Преобразование чисел в восьмеричную строку
- Функция map() в Python
- Работа с срезами в Numpy















