Pythonの関数で、2回目の結果に1回目のメモが混ざります。
原因の根拠と、必要最小限の修正を説明してください。

実行環境：Python 3.12.14、macOS
実行方法：以下をbroken.pyへ保存し、python3 -B broken.pyでファイル全体を実行

再現コード：
def add_note(label, notes=[]):
    notes.append(label)
    return notes

print(add_note("朝のメモ"))
print(add_note("夜のメモ"))

期待する出力：
['朝のメモ']
['夜のメモ']

実際の出力：
['朝のメモ']
['朝のメモ', '夜のメモ']

修正後に必要な条件：
・notesを省略するかNoneを渡すと、呼び出しごとに新しいリストを返す。
・後の呼び出しで、前に返したリストの内容を変えない。
・notesにリストを渡すと、そのリスト自身へ追記して同じリストを返す。
・空のリストを明示して渡した場合も、同じリストへ追記する。
・labelは文字列、notesは省略・None・リストを使う教材。
・関数名と、文字列を追記する用途は変えない。

回答してほしいこと：
1. 原因と、その説明を確かめられるPython公式資料
2. 小さな修正差分と理由
3. 元の再現手順、および明示した空リストを使う確認方法
4. 実行した確認と、まだ実行していない確認の区別

これは練習用の依頼文です。実際に使う際は、環境・コード・期待値・実測値を自分で確認した内容へ置き換えてください。
