Курс 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. Получение текущей даты и времени с помощью datetime
  2. Сериализация и десериализация объектов
  3. Декораторы в Python
  4. Удаление эмодзи с помощью pandas
  5. Создание словарей с defaultdict
  6. Инициализация объекта
  7. Объединение словарей в Python
  8. Многоточие в Python
  9. Big O оптимизация
  10. Оператор (*) в Python
  11. Быстрый поиск кода
  12. Создание и инициализация объектов
  13. Mad Libs Generator
  14. Запуск внешних программ с subprocess
  15. Работа с zip-архивами в Python
  16. Форматирование заголовков в Python
  17. Условное добавление элементов в список
  18. Разделение функций на этапы
  19. Генераторы в Python
  20. Структура данных словарь в Python
  21. Блок else в обработке исключений
  22. Поиск частого элемента
  23. Метод append() для списка
  24. Инверсия списка и строки
  25. Метод split() для разделения строк
  26. Поиск самого длинного слова в списке с использованием max()
  27. Обработка исключений в Python
  28. Установка переменной среды в Python
  29. Установка random seed в Python
  30. Сравнение строк в Python
  31. Экспорт данных с помощью writefile
  32. Подчеркивание в REPL
  33. Функция divmod() в Python
  34. Область видимости переменных
  35. Преобразование текста в нижний регистр
  36. Генерация QR-кодов с Python
  37. Получение пути к текущему скрипту с помощью os
  38. Функция enumerate() — Python
  39. Лямбда-функции для min/max
  40. Изменение логики работы с временем
  41. Переопределение унарных операторов
  42. Настройка нарезки списков
  43. Создание генераторов в Python
  44. Создание словарей и множеств в Python
  45. Создание словаря через dict comprehension
  46. Проверка однородности элементов списка
  47. Перегрузка операторов в Python
  48. Генерация UUID в Python

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