Курс 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. Метод split() для разделения строк
  3. Поиск уникальных элементов строкой в Python
  4. Функции map, filter, reduce
  5. Декораторы в Python
  6. Перевод двоичного кода в целое число
  7. Приближение чисел в Python
  8. GitHub в Telegram: подписка на уведомления
  9. Измерение потребления памяти при сортировке
  10. Нахождение разницы между списками в Python
  11. Модуль math: основные функции
  12. Модуль os: работа с файлами и папками
  13. Метод get() в Python
  14. Поиск уникальных и повторяющихся элементов
  15. Логирование с Logzero
  16. Поиск email
  17. Работа с PosixPath() в Python
  18. Транспонирование матрицы в Python
  19. Ошибка NotImplemented в Python
  20. Метод join() с набором
  21. Основные методы NumPy
  22. История Python
  23. Работа с классами данных
  24. Работа с исключениями в Python
  25. Принципы LSP и ISP в Python
  26. Метод eq для сравнения объектов
  27. Создание коллекций из выражения-генератора
  28. Python Метод del.
  29. Работа с файлами в Python
  30. Поиск индексов подстроки
  31. Печать списка с помощью метода join
  32. Добавление элемента в список.
  33. Вызов внешних программ в Python с помощью sh
  34. Переменная Шредингера
  35. Изменение элемента списка
  36. Копирование объектов в Python
  37. Создание графики с черепахой
  38. Метод clear для коллекций
  39. Сравнение def и lambda-функций
  40. Pillow: работа с изображениями
  41. Переопределение метода __pow__
  42. Модуль xkcd: добавление юмора в Python

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