部分的な関数自体を再定義することなく、Pythonの部分引数をリセットする方法はありますか?python:部分関数の引数をリセット
例えば、私は下にアキュムレータをリセットできるようにしたい:予想通り[5, 7]
を印刷
accum = []
def accumulator(list, item):
list.append(item)
a = partial(accumulator, accum)
a(5)
a(7)
accum
を。今、私は空にし、リストをリセットしたいのですが、a
上で定義された動作を維持する:
accum = []
a(8)
accum
私は[8]
を期待するが、この時、私の代わりに空のリストを取得します。定義された関数と外部スコープの変数との間の接続を維持する方法はありますか?
:あなたは後にしている私は考えて何を達成するための一つの方法はクロージャを使用することです。 'a.args'でargsを見ることができますが、これはreadonly属性です。注意:引数 'list'を呼び出さないでください。ピリオド組み込みの' list'型を隠します。 – AChampion