Курс 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. Срезы в Python
  2. Операторы сравнения в Python
  3. Оператор assert в Python
  4. Замена текста с помощью sub
  5. Измерение времени выполнения кода
  6. Получение частей дроби
  7. Python: Фильтрация списков с помощью filter()
  8. Форматирование строк в Python
  9. Парсинг веб-страниц с Beautiful Soup
  10. Оператор «or» в Python
  11. Генерация UUID в Python
  12. Функция sleep() в Python
  13. Создание матрицы в Python
  14. Методы split() и join() — Python строк.
  15. Управление контекстом с помощью декоратора contextmanager
  16. Магические методы в Python
  17. ChainMap.new_child() — добавление нового словаря
  18. Изучение объектов с помощью dir()
  19. Удаление специальных символов
  20. Обновление ключей в Python
  21. Очистка списка от False, None, 0, «»
  22. Многострочные строки в Python
  23. Декораторы с @wraps
  24. Декоратор Ajax required
  25. Метод init в Python
  26. Создание новых функций через partial
  27. Инициализация переменных
  28. Создание виртуальной среды
  29. Проверка памяти объекта
  30. Проверка условий: all и any
  31. Преобразование данных в Python
  32. Добавление Progressbar в Python
  33. Удаление falsy-значений из списка с помощью filter
  34. Сортировка элементов в Python
  35. Очистка входных данных
  36. Операторы присваивания в Python
  37. Присвоение и ссылки
  38. Форматирование вывода списков
  39. Модуль xkcd: загрузка комиксов
  40. Метод repr() в Python
  41. Перезагрузка оператора в Python
  42. Конкатенация строк с join() в Python
  43. Бесконечная проверка в Python
  44. Solidity для DeFi Ethereum
  45. Метод matmul для умножения матриц
  46. Декодирование строк в Python
  47. Numpy: использование Ellipsis

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