Курс 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. Замена текста в Python
  2. Декоратор @override
  3. Отношения подклассов в Python
  4. UserList в Python: Описание и примеры использования
  5. Импорт классов из другого файла
  6. Удаление дубликатов с помощью множеств
  7. Импорт объектов из модулей
  8. PEP-401: оператор
  9. Обновление шаблона base.html
  10. Декораторы в Python
  11. PrettyTable: создание таблицы
  12. Проверка строки на палиндром
  13. Получение списка файлов в директории с использованием os
  14. Объединение словарей в Python
  15. Преобразование строки в число
  16. Красивый вывод списка
  17. Метод radd для пользовательских чисел
  18. Оператор in для проверки наличия элемента
  19. Подсчет частоты элементов с Counter
  20. Магические методы в Python
  21. Работа с модулем random
  22. Работа с байтовыми строками в Python
  23. Удаление ключа из словаря
  24. Методы работы со списками
  25. Загрузка постов Instagram
  26. Форматирование даты с strftime()
  27. %pinfo: получение информации об объекте
  28. Изучение объектов с помощью dir()
  29. Вызов внешних программ в Python с помощью sh
  30. Экспорт внешнего файла с помощью writefile
  31. Тайное преобразование типа ключа
  32. Подсчет элементов в Python
  33. Возврат нескольких значений из функции
  34. Обработка ошибок в Python
  35. Оценка выражений генератора в Python
  36. Проверка дубликатов в Python
  37. Лямбда-функции в Python
  38. Подсчет элементов в Python
  39. Создание GUI с Tkinter: Entry
  40. Работа с YAML в Python
  41. Работа с библиотекой requests
  42. Цикл for с enumerate() в Python
  43. Метод pos в Python
  44. Проверка на истинность объектов в Python
  45. Обход словаря в Python
  46. Namedtuple в Python
  47. Функции классификации комплексных чисел

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