Курс 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. Частичное применение функций в Python
  2. Открытие, чтение и закрытие файла
  3. Вычисление разности множеств в Python
  4. Принципы программирования
  5. Работа со случайными элементами
  6. Создание и использование модулей в Python
  7. Метод join() с набором
  8. Аргументы *args и **kwargs
  9. Разделение строки с помощью split()
  10. Генераторы списков
  11. Вакансии в Nebius
  12. Поиск подстроки в строке
  13. Поиск шаблона в строке
  14. Преобразование Excel в PDF с Spire.XLS
  15. Python Метод sleep() из time
  16. Работа с базами данных SQLite
  17. Декоратор total_ordering для сравнения объектов
  18. Работа с словарями в Python
  19. Логирование в Python
  20. ChainMap.new_child() — добавление нового словаря
  21. Просмотр атрибутов и методов класса
  22. Проверка типов с использованием isinstance
  23. Тестирование времени с Freezegun
  24. Форматирование данных с помощью pprint
  25. Работа с областями видимости переменных
  26. Непрерывная проверка в Python
  27. Метод count() для списка
  28. Удаление специальных символов
  29. Создание новых списков в Python
  30. Библиотека wikipedia для Python
  31. Установка и использование howdoi
  32. Combobox в Tkinter
  33. Именованные кортежи в Python
  34. Метод ne для сравнения объектов
  35. Профилирование с Pandas
  36. Строки в Python: апострофы и кавычки
  37. Имена объектов в Python
  38. Инверсия списков и строк в Python
  39. Поиск уникальных и повторяющихся элементов
  40. Изменения в обработке логических значений
  41. Dict Comprehension в Python
  42. Лямбда-функции в цикле
  43. List Comprehension Tutorial
  44. Обучение модели с указанием эпох
  45. Использование метода lower()
  46. Установка и использование модуля «howdoi»
  47. Генерация резюме в Gensim
  48. Отправка POST запроса на сервер.

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