Курс 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. Метод __complex__ в Python
  2. Antigravity модуль
  3. Работа со строками в Python.
  4. Импорт классов из другого файла
  5. Циклы for в Python
  6. Добавление элементов в список: append() vs extend()
  7. Шаблоны Flask: условия и циклы
  8. Мониторинг работы программы Py-spy
  9. Получение текущего времени в Python
  10. Итерация по итерируемым объектам
  11. Перебор элементов списка в Python
  12. Работа со строками в Python
  13. Операции с массивами в NumPy
  14. Вычисление разности множеств в Python
  15. Создание словаря в Python
  16. Удаление символов новой строки в Python.
  17. Enum в Python
  18. Транспонирование 2D-массива с помощью zip
  19. Удаление элементов из списка
  20. Установка Python — Простое руководство
  21. inspect в Python: анализ кода
  22. Разность множеств
  23. Наследование в программировании
  24. Отладчик pdb: начало работы
  25. Списки в Python
  26. Структурирование именованных констант
  27. Сериализация объектов в Python
  28. Создание графиков в терминале
  29. Присоединение элементов коллекции
  30. Модуль Antigravity в Python 3
  31. Извлечение новостей с помощью newspaper3k
  32. Преобразование символов в нижний регистр
  33. Отделение звука от видео
  34. Декораторы с аргументами
  35. Игра Виселица на Python
  36. Управление асинхронными задачами на Python.
  37. Поиск индекса элемента
  38. Форматирование строк в Python
  39. Обработка ошибок в Python
  40. Сравнение строк в Python
  41. Работа с массивами в Numpy
  42. Новшества Flask 2.0
  43. Справка по импортированным модулям
  44. Метод rename() для переименования файлов и каталогов
  45. Метод Enumerate() для списков
  46. Безопасный доступ к значениям словаря

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