Курс Python → Избегание изменяемых аргументов

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

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


def add_element(item, my_list=None):
    if my_list is None:
        my_list = []
    my_list.append(item)
    return my_list

print(add_element(1)) # [1]
print(add_element(2)) # [2]

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

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

Автор урока

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

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

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

  1. Поиск шаблона в начале строки
  2. Операции с матрицами в Python
  3. Подчеркивание в REPL
  4. Структуры данных в Python
  5. Измерение времени выполнения кода
  6. PEP-401: оператор
  7. Работа с классами данных
  8. Принципы LSP и ISP в Python
  9. Оператор «not» в Python
  10. Тип данных TypeVarTuple
  11. Списковый компрехеншен.
  12. Функция reversed() в Python
  13. Метод __imod__ для Python
  14. Методы __repr__ и __str__ в Python
  15. Извлечение чисел из текста
  16. Обучение модели с указанием эпох
  17. Перевод эмодзи и эмотиконов.
  18. Повторение элементов в Python
  19. Функция enumerate() — Python
  20. Отправка HTTP-запросов с User-Agent
  21. Метод enumerate() в Python
  22. Управление IP-адресами через прокси
  23. Python enumerate() использование
  24. Проверка на истинность объектов в Python
  25. Работа с словарями в Python
  26. Библиотека Rich: форматирование текста
  27. Метод enumerate() в Python
  28. Объединение кортежей в Python
  29. Создание веб-приложения с Flask
  30. Получение списка кортежей из словаря
  31. Разделение строк методом split()
  32. Логический оператор «and» в Python
  33. Проверка существования переменной с оператором :=
  34. Работа с Enum в Python3.
  35. Иерархия классов в Python
  36. Преобразование данных в Python
  37. Создание списков в Python
  38. Множества и frozenset
  39. Получение частей дроби
  40. Проверка класса объекта
  41. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  42. TypedDict для kwargs в Python 3.12
  43. Копирование объектов в Python
  44. Получение пути к текущему скрипту с помощью os
  45. Работа с массивами в Numpy

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