Курс 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. Подписка на @SelectelNews
  3. Установка переменной среды в Python
  4. Возврат нескольких значений из функции
  5. Избегайте изменяемых аргументов
  6. Управление сессиями в Python
  7. Метод __call__ в Python
  8. Сравнение неупорядоченных списков
  9. Хранение переменных в Python.
  10. Ограничение итераций в Python
  11. Список и кортеж в Python
  12. Метод get для словаря
  13. Глобальные переменные в Python
  14. Конкатенация строк в Python
  15. Удаление элементов во время итерации
  16. Пересечение списков с использованием множеств
  17. Метод setdefault() в Python
  18. Декораторы в Python
  19. Работа с файлами в Python
  20. Избегание циклических зависимостей классов в Python
  21. Многоточие в Python
  22. Работа с timedelta в Python
  23. Асинхронное выполнение задач в Python
  24. JMESPath в Python
  25. Документирование функций в Python
  26. Python и Монти Пайтон
  27. Работа с deque из collections
  28. Функция print() — вывод информации
  29. Использование функции enumerate()
  30. Подсчет элементов в Python
  31. Поиск индекса элемента
  32. Подсчет элементов с помощью Counter из collections
  33. Работа с аргументами командной строки в Python
  34. Monkey Patching в Python
  35. Отладка производительности Python
  36. Лямбда-функции в Python
  37. Регистрация на курсы SF Education
  38. Работа с пользовательским вводом
  39. Работа с набором данных CIFAR10 в PyTorch
  40. Виртуальное окружение Python
  41. Избегайте пустого списка
  42. Преобразование числа в восьмеричную строку
  43. Логирование с Logzero
  44. Транспонирование 2D-массива с помощью zip
  45. Обработка исключений
  46. Работа с JSON в Python
  47. Передача параметров в Python
  48. Добавление элементов в список: append() vs extend()
  49. Сериализация объектов в Python

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