Курс 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. Подчеркивание в REPL
  2. Игра Виселица на Python
  3. Получение текущей директории
  4. Экспорт функций в Python
  5. Управление доступом к модулю
  6. Переопределение метода xor в Python
  7. Логирование с Logzero: ротация файла
  8. Метод setitem в Python
  9. Логирование с Logzero
  10. Добавление кнопки в tkinter
  11. Функции min(), max(), sum()
  12. Создание namedtuple списком полей
  13. Управление сессиями в Python
  14. Отладка производительности Python
  15. Работа с аргументами командной строки в Python
  16. Перевернуть список в Python
  17. Удаление элементов из списка в Python.
  18. Представление бесконечности в Python
  19. Установка и использование библиотеки google
  20. Поиск частых элементов в списке
  21. Навыки Python: строки, типы данных
  22. Сортировка данных в Python
  23. Python: Splat-оператор и splatty-splat
  24. Константы в модуле cmath
  25. Сортировка в Python
  26. Контекстный менеджер в Python
  27. Декораторы для регистрации функций
  28. Визуализация пропусков данных
  29. Копирование объектов в Python
  30. Основные методы NumPy
  31. Оператор in в Python
  32. Переворот строки
  33. Работа с *args и **kwargs в Python
  34. Измерение времени выполнения кода
  35. Метод get для словарей
  36. Присвоение и ссылки
  37. Основы работы с os
  38. Обработка исключений в Python
  39. Генерация UUID в Python
  40. Подписка на SelectelNews в Twitter
  41. Распаковка значений в Python
  42. Логирование в Python
  43. Проверка кортежей.
  44. Метод difference_update() — разность множеств
  45. Lambda Functions in Python

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