特に、外側の関数が内側の関数を返すクロージャーやメモ化について言及しているのではありません。おそらくメモ化を使用して、再帰関数を書きたいと思ったいくつかのインスタンスがありました。外部関数で辞書またはその他のデータ構造を初期化し、再帰ヘルパー関数に書き込む方がはるかに簡単に思えました。外部関数のdictと引数にアクセスします。これが私が言いたいことです -
def foo(arr, l):
cache = {}
result = []
def recursive_foo_helper(i, j, k):
# some code that depends on arr, l, i, j, k, cache, and result
for (x, y) in arr:
if recursive_foo_helper(x, y, k):
return result
return None
次のような非常に長いシグネチャを使用してヘルパー関数を個別に宣言する代わりに、
recursive_foo_helper(arr, l, i, j, k, cache={}, result=[])
これを行うことはメモ化にとってかなり標準的であることを読んだことがありますが、再帰的なヘルパー関数のためだけに行ってもよいかどうかについてのコンセンサスがあるかどうかに興味がありました.