Курс 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"

  1. Отправка поздравлений по дню рождения
  2. Преобразование в float
  3. Изменение списка срезами
  4. UserString в Python
  5. Именованные кортежи в Python
  6. Функции all и any в Python
  7. Функция enumerate в Python
  8. Списки: объединение, изменение
  9. Именование столбцов в Python с pandas
  10. Скрытие вывода данных
  11. Создание уникального множества
  12. Повторение элементов в Python
  13. Профилирование данных с Pandas
  14. Выражения-генераторы в Python
  15. Создание матрицы в Python
  16. Генерация чисел с range()
  17. Преобразование Word в PDF с Spire.Doc
  18. Извлечение аудио из видео
  19. Комментарии в Python.
  20. Переворот списка в Python
  21. Цикл while в Python
  22. Оптимизация поиска в словарях
  23. Python Метод del.
  24. Импорт модулей в Python 3.12
  25. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  26. Дефолтные параметры в Python
  27. Генератор надежных паролей
  28. Форматирование строк в Python.
  29. Методы обработки строк в Python
  30. Создание списка через итерацию
  31. Работа с итераторами через срезы
  32. Вложенные генераторы в Python
  33. Преобразование списка в словарь через генератор
  34. Поиск наиболее частого элемента списке
  35. Управление ресурсами с контекстными менеджерами
  36. Фильтрация списка от «ложных» значений
  37. Повторение элементов списков
  38. Отступы в Python
  39. Monkey Patching в Python
  40. Область видимости переменных
  41. Блок else в обработке исключений
  42. Конвертация коллекций в Python.
  43. Python enumerate() использование
  44. Преобразование чисел в восьмеричную строку
  45. Функция map() в Python
  46. Работа с срезами в Numpy

Marketello читают маркетологи из крутых компаний