Курс 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. Работа с argparse
  2. Повторение элементов в Python
  3. Удаление дубликатов в pandas
  4. Применение функции к списку
  5. Функция zip() в Python
  6. Упрощенный вывод данных в Python
  7. Логические значения в Python
  8. Форматирование строк в Python
  9. Оператор walrus в Python
  10. Кортеж в Python: создание, доступ, изменение
  11. Создание пустых функций и классов в Python
  12. Работа с deque из collections
  13. Работа с файлами в Python
  14. Настройка шрифта и цвета в Tkinter
  15. Обработка ошибок в JSON данных
  16. Проверка кортежей.
  17. Скачать видео с YouTube
  18. Оператор объединения словарей
  19. Переворот списка в Python
  20. Генераторы в Python
  21. Обработка исключения UnboundLocalError
  22. Оптимизация строк в Python
  23. globals и locals
  24. Работа со строками
  25. Работа с IP-адресами в Python
  26. Класс Counter() для подсчета элементов
  27. Установка random seed в Python
  28. Визуализация пропусков данных
  29. Основы работы со строками в Python
  30. Замена текста в Python
  31. Работа с комплексными числами в Python
  32. Создание копии списка в Python
  33. Работа с коллекциями Python
  34. Конкатенация строк с join() в Python
  35. Раздувающийся словарь в Python
  36. Работа с необработанными строками
  37. Поиск с библиотекой Google
  38. Добавление элемента в список.
  39. Округление банкира в Python
  40. Циклы for в Python
  41. Нахождение пересечения множеств
  42. Управление пакетами с pip
  43. Использование функции product
  44. Метод __ixor__ для побитового исключающего ИЛИ

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