Курс 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 3.12
  2. Преобразование числа в список цифр
  3. Методы в Python
  4. Установка и использование TensorFlow
  5. Удаление символа из строки
  6. Класс-оболочка для словарей
  7. Виртуальные среды в Python
  8. Автоматизация с Python
  9. Расчет времени выполнения
  10. Модуль math: константы π и e
  11. Оператор += для объединения строк
  12. Объединение словарей в Python
  13. Оператор is в Python
  14. Отправка HTTP-запросов в Python
  15. Сложение матриц в NumPy
  16. Метод setdefault() в Python
  17. Создание и удаление объектов
  18. Защита данных в Python
  19. Переопределение метода __rshift__
  20. Генерация QR-кодов с Python
  21. Срезы в Python
  22. Генерация UUID в Python
  23. Атрибуты класса и экземпляра
  24. Генерация случайных чисел Python
  25. Генераторные функции в Python
  26. Асинхронный код в Python
  27. Создание словаря с значением по умолчанию
  28. Группы исключений в Python
  29. Получение ID текущего процесса
  30. Дефолтные параметры в Python
  31. Обработка данных в Python
  32. Работа с Path в Python
  33. Принципы Zen of Python
  34. Отладчик pdb: начало работы
  35. Объединение словарей в Python
  36. Flask — веб-фреймворк Python
  37. Метод __call__ в Python
  38. Метод __ixor__ для побитового исключающего ИЛИ
  39. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  40. Списковый компрехеншен.
  41. Конкатенация строк с методом join()
  42. Создание директории в Python
  43. Проверка элементов списка условием
  44. Python Менеджер контекста
  45. Concrete Paths — метод .with_suffix()
  46. Оптимизация гиперпараметров с Scikit Optimize
  47. Проблема сравнения словарей

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