Курс 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. Работа с контекстным менеджером Pool
  3. Обновление и получение данных в SQLite
  4. Хеши в Python
  5. Проверка наличия элемента в списке
  6. Добавление кнопки в tkinter
  7. Динамическая типизация в Python
  8. Обработка исключений с блоком else
  9. Отладка утечек памяти в Python
  10. Работа с файлами в Python
  11. Профилирование данных с Pandas.
  12. Работа со строками в Python
  13. Python: изменяемые и неизменяемые коллекции
  14. Работа с множествами в Python
  15. Разделение строки с помощью split()
  16. Python Enumerate
  17. Запуск асинхронной корутины
  18. Нарезка списков в Python
  19. Сортировка с помощью key
  20. Профилирование данных с Pandas
  21. Метод split() для разделения строк
  22. Списковые включения в Python
  23. Блок else в циклах.
  24. Разработка Telegram-ботов
  25. Создание и удаление объектов
  26. Упрощение работы с JSON-данными в Python
  27. Хранение переменных в словаре.
  28. Magic Commands — улучшение работы с Python
  29. Создание списков в Python
  30. Функциональное программирование.
  31. Инициализация переменных
  32. Глубокое копирование объектов
  33. Работа с библиотекой xkcd
  34. Метод ipow для возведения в степень
  35. Измерение времени выполнения кода
  36. Список импортированных модулей в Python
  37. Наиболее частотные элементы с помощью Counter
  38. Установка и использование pyshorteners
  39. Однострочники Python
  40. Метод join() для объединения элементов
  41. Округление банкира в Python
  42. Функция zip() в Python
  43. Импорт модулей и пакетов в Python

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