Курс 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 Метод Union Множеств
  2. Тернарный оператор в Python
  3. Создание множества в Python
  4. Нан-рефлексивность в Python
  5. Нахождение самого длинного слова в списке с помощью max
  6. Преобразование range в итератор
  7. Создание словарей и множеств в Python.
  8. Поиск самого длинного слова в списке с использованием max()
  9. inspect в Python: анализ кода
  10. Python reversed() vs срез[::-1]
  11. Порядок операций в Python
  12. Работа с Enum в Python3.
  13. Очистка списка от False, None, 0, «»
  14. Замена текста с помощью sub
  15. Форматирование кода на Python
  16. Функция zip() в Python
  17. Переопределение метода __eq__
  18. Работа с областями видимости переменных
  19. Установка библиотек в Python
  20. Python enumerate() функции
  21. Импорт модулей в Python 3.12
  22. Преобразование текста в нижний регистр
  23. Создание копии списка в Python
  24. Область видимости переменных
  25. Капитализация строк
  26. Особенности ключей словаря в Python
  27. Применение функции к списку
  28. Работа с геоданными с помощью geopy
  29. Функция count() в Python
  30. Присвоение и ссылки
  31. Метод __index__ в Python
  32. Создание вложенного генератора
  33. Регистрация на курсы SF Education
  34. Символ подчеркивания в Python
  35. Равенство и идентичность в Python
  36. Оператор in в Python
  37. Синтаксис переменных цикла в Python
  38. Функция product() в Python
  39. Реверс строки и списка в Python.
  40. Метод get() для словарей
  41. Декодирование строк в Python
  42. Изменение IP-адреса в Python
  43. Python itertools combinations() — группировка элементов
  44. Возвращение нескольких значений через кортеж или класс
  45. Наследование в программировании
  46. Модуль xkcd: загрузка комиксов
  47. Функции в Python: создание и вызов
  48. Каналы Senior: Python, Java, Frontend, SQL, C++

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