Курс 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. Логирование с Logzero
  2. Скрытие вывода данных
  3. Разделение строки на пары ключ-значение.
  4. Конвертация коллекций в Python.
  5. Модуль array: создание и использование массивов
  6. Руководство по использованию Colorama
  7. Отладка регулярных выражений в Python
  8. Генераторы в Python
  9. Работа с PosixPath() в Python
  10. Создание детектора плагиата
  11. Приоритет операций в Python
  12. Создание виртуальной среды
  13. Библиотека Rich: форматирование текста
  14. Избегайте изменяемых аргументов
  15. Переопределение метода __eq__
  16. Преобразование объекта в строку
  17. Печать месячного календаря
  18. Операторы увеличения и уменьшения в Python
  19. Работа с комплексными числами
  20. Извлечение аудио из видео
  21. None в Python: использование и особенности
  22. Работа с итераторами через срезы
  23. Непрерывная проверка в Python
  24. Переопределение метода __lshift__
  25. Извлечение чисел из текста
  26. Генераторы в Python
  27. Подсчет вхождений элементов
  28. Удаление элементов из списка в Python
  29. Абстракции словарей и множеств в Python
  30. Основы Python за 14 дней
  31. Python: Splat-оператор и splatty-splat
  32. Сравнение строк в Python
  33. Настройка логгера Logzero
  34. Отображение HTML кода в Python
  35. Операторы += в Python
  36. Наиболее частотные элементы с помощью Counter
  37. Управление доступом к модулю
  38. Транспонирование 2D-массива с помощью zip
  39. Печать календаря в Python
  40. Проблема сравнения словарей
  41. Многострочные комментарии в Python
  42. Преобразование PowerPoint в PDF.
  43. Циклы for в Python
  44. Извлечение аудио из видео
  45. Глубокое копирование объектов

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