Курс Python → Избегайте пустого списка

Пустой список нельзя использовать как аргумент по умолчанию в Python из-за того, что значения по умолчанию для аргументов функции вычисляются только один раз, при определении функции. Если вы попытаетесь использовать пустой список в качестве значения по умолчанию для аргумента функции, то он будет создан при определении функции и будет ссылаться на один и тот же объект в памяти каждый раз, когда функция вызывается.

Это означает, что если внутри функции изменяется пустой список, то изменение будет сохранено в этом списке для всех последующих вызовов функции, так как все они будут использовать один и тот же объект списка. Это может привести к неожиданным и нежелательным результатам, так как изменение списка в одном вызове функции может повлиять на другие вызовы, которые рассчитывают на неизменность значения по умолчанию.

Чтобы избежать подобных проблем, рекомендуется использовать в качестве значения по умолчанию неизменяемые объекты, такие как None, числа или строки. Если необходимо использовать изменяемый объект, то лучше создавать его внутри функции, чтобы каждый вызов функции работал с отдельным экземпляром объекта и не влиял на другие вызовы.


def my_function(my_list=None):
    if my_list is None:
        my_list = []
    my_list.append("element")
    print(my_list)

my_function()  # ["element"]
my_function()  # ["element"] (не изменяет значение по умолчанию)

В приведенном примере использовано None как значение по умолчанию для аргумента функции, и внутри функции создается новый пустой список, если аргумент не был передан. Это позволяет избежать проблем с изменяемыми объектами и гарантирует, что каждый вызов функции работает с отдельным списком, не влияя на другие вызовы.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Тестирование функции сложения
  2. Python itertools combinations() — группировка элементов
  3. Копирование в Python
  4. Округление дробей в Python
  5. Печать комбинаций в Python с Itertools
  6. Тест скорости набора текста на Python
  7. Создание графиков в терминале
  8. Многострочные комментарии в Python
  9. Получение комбинаций в Python
  10. Работа с библиотекой requests
  11. Создание и операции с дробями
  12. Python Метод del.
  13. Множественное присваивание в Python
  14. Модуль xkcd: загрузка комиксов
  15. Декораторы в Python
  16. Распаковка аргументов в Python
  17. Работа с модулем os в Python
  18. Официальный канал Python в Telegram
  19. Поиск наиболее частого элемента списке
  20. Использование type hints
  21. Область видимости переменных в Python
  22. Работа с deque в Python
  23. Создание итерируемых объектов
  24. Модуль pprint: улучшение вывода данных
  25. Импорт объектов из модулей
  26. Наиболее частотные элементы с помощью Counter
  27. Изменение логики работы с временем
  28. Создание списков в Python
  29. Непрерывная проверка в Python
  30. Переопределение метода __and__
  31. Метод index() в Python
  32. Операция += для списков
  33. Python Метод sleep() времени
  34. Проверка на палиндром
  35. Подсчет элементов в списке с Counter
  36. Оператор объединения словарей
  37. Определение объема памяти объекта
  38. JMESPath в Python
  39. Работа с OpenCV
  40. Сортировка в Python
  41. Отладчик pdb: начало работы
  42. Представление бесконечности в Python
  43. Безопасные SQL-запросы в Python 3.11
  44. Библиотека sh: удобные команды терминала
  45. Структура данных словарь в Python

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