Курс Python → Дефолтные параметры в Python

При определении функций в Python можно использовать дефолтные параметры, которые будут использоваться, если при вызове функции не переданы соответствующие аргументы. Однако, при использовании изменяемых объектов в качестве дефолтных параметров, может возникнуть проблема, когда изменения в этих объектах сохраняются между вызовами функции. Например, если использовать список в качестве дефолтного параметра и изменять его внутри функции, то изменения будут сохранены между вызовами функции.

Для решения этой проблемы можно воспользоваться ключевым словом None при определении аргументов по-умолчанию. Таким образом, при каждом вызове функции будет создаваться новый объект для дефолтного параметра, и изменения внутри функции не будут влиять на предыдущие или последующие вызовы.


def example_func(param=None):
    if param is None:
        param = []
    param.append(1)
    return param

print(example_func())  # [1]
print(example_func())  # [1]

В данном примере функция example_func принимает параметр param, который по-умолчанию равен None. Если при вызове функции параметр не передан, то создается новый пустой список. После этого к списку добавляется элемент 1 и он возвращается. При последующих вызовах функции каждый раз будет создаваться новый пустой список, и изменения не будут сохраняться между вызовами.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Встроенные функции Python
  2. Замыкания в Python
  3. Объединение списков в Python
  4. Работа с путями в Python
  5. Тестирование времени с Freezegun
  6. Переопределение метода __lshift__
  7. Создание словарей в Python
  8. Декораторы классов
  9. Участие в сообществе @selectel
  10. Удаление элемента по индексу
  11. Работа с комбинациями в Python.
  12. Декораторы в Python
  13. Мониторинг памяти с Pympler
  14. Разность множеств
  15. Обработка исключений в Python 3
  16. Работа с timedelta
  17. Python Метод Union Множеств
  18. Разбиение строки в Python
  19. Работа с IP-адресами в Python
  20. Функции any() и all() в Python
  21. Преобразование символов с помощью map
  22. Работа с itertools
  23. Инициализация структур данных
  24. Python groupby() из itertools: работа с повторяющимися элементами
  25. Блок try-except-else
  26. Тайное преобразование типа ключа
  27. Удаление элементов из списка в Python
  28. Таймер обратного отсчета
  29. Принципы программирования
  30. Объединение строк с помощью метода join
  31. Разделение списка на гнппы
  32. Именование переменных в Python
  33. Python itertools combinations() — группировка элементов
  34. Методы __repr__ и __str__ в Python
  35. Именованные срезы в Python
  36. Упрощение условных выражений с тернарным оператором
  37. Метод get для словарей
  38. Метод join() для объединения элементов строки
  39. Руководство по Pymorphy2
  40. Комментарии в Python.
  41. Создание объекта timedelta
  42. Удаление файлов в Python
  43. Метод enumerate() в Python
  44. Создание копии итератора

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