Nie mam na myśli zamknięć, gdzie funkcja zewnętrzna zwraca wewnętrzną funkcję, lub w szczególności do zapamiętywania. Było kilka przypadków, w których chciałem napisać funkcję rekursywną, być może z pamięcią, i wydawało się o wiele łatwiejsze zainicjowanie aa dyktatury lub jakiejś innej struktury danych w zewnętrznej funkcji, a następnie mieć rekursywną funkcję pomocniczą zapisującą i dostęp do dyktatu i argumentów funkcji zewnętrznej. Oto co mam na myśli -Kiedy dobrze jest korzystać z funkcji zagnieżdżonych w Pythonie?
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
zamiast posiadające funkcję pomocnika zgłaszać osobno z jakimś bardzo długim podpisania podobnego
recursive_foo_helper(arr, l, i, j, k, cache={}, result=[])
Czytałem, że ten sposób jest dość standardowy dla memoization, ale byłem ciekawy, czy istnieje konsensus co do tego, czy można to zrobić tylko dla rekurencyjnych funkcji pomocnika.
Jeśli nie wywołasz tej funkcji w innych miejscach, nie widzę powodu, dla którego byłoby to złe. – OptimusCrime