TGViewer
Разъяснивший Python Разъяснивший Python @python_pssss · 6.95K subscribers
Post #2740 630
Антипаттерн недели: Использование изменяемых объектов по умолчанию

Использование изменяемых объектов (например, списков или словарей) в качестве значений по умолчанию для аргументов функции может привести к неожиданному поведению.

Значение по умолчанию ([]) создаётся один раз при определении функции и используется повторно для всех вызовов. Поэтому изменения сохраняются между вызовами функции.

Как исправить:

Используйте None и создавайте новый список внутри функции:
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items

print(add_item(1)) # [1]
print(add_item(2)) # [2] — теперь всё работает правильно!


Избегайте изменяемых значений по умолчанию, чтобы не создавать неожиданных побочных эффектов.

Разъяснивший Python
  • 👍 2
More from @python_pssss
  1. Oct 9, 2026Создание словаря из двух списков Часто возникает задача создать словарь из двух отдельных…
  2. Oct 8, 2026Инвертирование словаря Иногда нужно поменять местами ключи и значения. Метод invert_dict р…
  3. Oct 8, 2026Дизайнер, айтишник, продажник или маркетолог – а что, если часть вашей работы заберет Clau…
  4. Oct 7, 2026Словарь и set comprehensions Словарю нужны ключ и значение. Определяем ключ и значение в e…
  5. Oct 7, 2026Работа с датами Модуль python-dateutil предоставляет мощное расширение для стандартного da…
  6. Oct 6, 2026Магические методы в классах Python __init__ ,агическиеиагическиявляются магическими метода…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →