Курс 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
  2. Метод join() с набором
  3. Особенности множеств в Python
  4. Генерация случайных чисел в Python
  5. Настройка вывода NumPy
  6. Константы в модуле cmath
  7. Цикл for в Python
  8. Преобразование генераторов в циклы
  9. Возврат значений из генератора
  10. Создание пользовательской коллекции в Python
  11. Изменение списка срезами
  12. Вывод сложных структур данных с помощью pprint
  13. Преобразование данных в Python
  14. Сравнение строк в Python
  15. GitHub в Telegram: подписка на уведомления
  16. Генераторы в Python
  17. *args и **kwargs в Python
  18. Подписка на Kaspersky Team
  19. TON Smart Challenge #2: участие и подготовка
  20. Удаление ключа из словаря в Python
  21. Форматирование строк с f-строками
  22. Декораторы в Python
  23. Удаление специальных символов с помощью re.sub
  24. Безопасные SQL-запросы в Python 3.11
  25. Статическая типизация в Python
  26. Расчет времени выполнения кода
  27. Разделение функций на этапы
  28. Обработка ошибок в Python
  29. Работа с парами ключ-значение
  30. Сокращение ссылок с pyshorteners
  31. Обработка исключений в Python
  32. Парсинг веб-страниц с Beautiful Soup
  33. Извлечение новостей с помощью newspaper3k
  34. Сложные типы данных в Python
  35. Пространство имен в Python
  36. Идентификатор объекта в Python
  37. Оператор «not» в Python
  38. Получение текущей даты и времени
  39. Инверсия списка и строки в Python
  40. Мощь вложенных функций в Python
  41. Удаление пробелов методом translate()
  42. Установка и использование howdoi
  43. Метод rsub в Python: расширение функциональности вычитания
  44. Псевдонимы в Python
  45. Аннотации типов в Python

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