Курс Python → Python Аргументы по умолчанию

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


def add_item(item, items=[]):
    items.append(item)
    return items

print(add_item('apple'))  # ['apple']
print(add_item('banana'))  # ['apple', 'banana']

В приведенном примере функция add_item принимает элемент и добавляет его в список items. При первом вызове функции список items содержит только ‘apple’, но при следующем вызове ‘banana’ добавляется к списку. Это происходит потому, что список items сохраняет свое состояние между вызовами функции.

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


def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

print(add_item('apple'))  # ['apple']
print(add_item('banana'))  # ['banana']

В этом примере функция add_item проверяет, был ли передан аргумент items. Если нет, то создается новый пустой список. Таким образом, каждый вызов функции создает новый объект для аргумента items, избегая проблем с изменяемыми значениями по умолчанию.

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

Автор урока

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

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

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

  1. Работа с zip()
  2. Искажение имен в Python
  3. Сортировка и обратный порядок
  4. Метод count() для списков
  5. Функция reduce() из модуля functools
  6. Замена текста в Python
  7. Принципы LSP и ISP в Python
  8. Создание OrderedDict
  9. Генератор надежных паролей
  10. Форматирование строк в Python
  11. Инверсия списков и строк в Python
  12. Генерация случайных чисел Python
  13. Сокращение ссылок с pyshorteners
  14. Создание копии итератора
  15. Добавление элемента в список.
  16. Синхронизация доступа к ресурсам
  17. Переворот последовательности
  18. Строковое представление объектов
  19. Работа с модулем random
  20. Различия символов в Python
  21. Генерация QR-кодов с библиотекой qrcode
  22. Классы данных в Python
  23. Функция zip() в Python
  24. capitalize() — изменение регистра первого символа строки
  25. Работа с f-строками 2.0
  26. Утечки переменных цикла в Python 3.x
  27. Python: изменяемые и неизменяемые коллекции
  28. Множественное наследование в Python
  29. Генераторы в Python
  30. Именование переменных в Python
  31. Объединение словарей в Python 3.5+
  32. Обработка исключений в Python
  33. Работа с атрибутом dict
  34. Проверка подстроки в строке с помощью in
  35. Очистка списка от False, None, 0, «»
  36. Переворот строки
  37. Перегрузка операторов в Python
  38. Bootle — простой веб-фреймворк
  39. Форматирование строк в Python
  40. Оптимизация строк в Python
  41. Генераторы в Python
  42. Преобразование Word в PDF с Spire.Doc
  43. Обработка StopIteration в Python
  44. Создание функций с произвольным количеством аргументов
  45. Работа с датами в Python
  46. Динамическая типизация в Python
  47. Оператор распаковки в Python

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