# Mutable default arguments in Python: why `__defaults__` bites

> Source: <https://lernerpython.com/2026/09/02/mutable-default-arguments-in-python-why-defaults-bites/>
> Published: 2026-09-02 06:00:00+00:00

Mutable default arguments in Python: why `__defaults__` bites

September 2, 2026

Python

Python

Because Python functions’ defaults are kept in __defaults__, avoid mutable defaults:

```
def add1(x=[]):
    x.append(1) # same as: add1.__defaults__[0].append(1) ‼️
    return x
add1() # [1]
add1() # [1, 1]
add1() # [1, 1, 1] 🤯
```

add1.__defaults__   # ([1, 1, 1],)

←
Python generator frames: Inspecting locals with gi_frame

Claude Code always produces something. That’s the hard part.
→
