Курс 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: список all
  2. Ключевое слово global в Python
  3. Лямбда-функции для min/max
  4. Использование метода lower()
  5. Работа с Path в Python
  6. f-строки в формате строк
  7. Логирование с Logzero: ротация файла
  8. Профилирование с Pandas
  9. Запуск файлового сервера
  10. Подсчет элементов в Python
  11. Возвращение нескольких значений
  12. Параллельные вычисления в Python
  13. Модуль pprint
  14. Принцип одной функции
  15. Объединение итераторов
  16. EMOT преобразование эмодзи в текст
  17. Объединение словарей в Python
  18. Участие в LP стейкинге Waves
  19. Нахождение максимального значения и его индекса в списке
  20. Переопределение метода __eq__
  21. Defaultdict в Python
  22. Открытие и запись файлов
  23. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  24. Тестирование модели в PyTorch
  25. Транспонирование 2D-массива с помощью zip
  26. Переопределение метода len
  27. Python 3.12: Псевдонимы типов
  28. Функции any() и all() в Python
  29. Копирование в Python
  30. Функции высшего порядка в Python
  31. Повторение элементов в Python
  32. Объединение кортежей в Python
  33. Измерение времени выполнения кода в Python
  34. Работа с NumPy
  35. Преобразование чисел в Python
  36. Получение списка кортежей из словаря
  37. Форматирование данных с pprint
  38. Преобразование символов с помощью map
  39. Установка пакета в Python
  40. Установка и использование Telegram API в Python
  41. Модуль inspect
  42. Аннотации типов в Python
  43. Поиск всех индексов подстроки
  44. Подчеркивание в REPL
  45. Конкатенация строк с методом join()

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