Non mi riferisco alle chiusure, dove la funzione esterna restituisce la funzione interna, o alla memoizzazione, in particolare. Ci sono stati alcuni casi in cui ho voluto scrivere una funzione ricorsiva, magari con la memoizzazione, e sembrava molto più semplice inizializzare aa dict o qualche altra struttura di dati nella funzione esterna, e quindi avere una funzione di supporto ricorsiva che scriveva e accedere al dict e agli argomenti della funzione esterna. Ecco quello che voglio dire -Quando è opportuno utilizzare le funzioni annidate in Python?
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
invece di avere la funzione di supporto dichiarato separatamente con qualche firma eccellente lunghi come,
recursive_foo_helper(arr, l, i, j, k, cache={}, result=[])
Ho letto che fare questo è abbastanza standard per Memoizzazione, ma ero curioso se c'è un consenso sul fatto che sia OK fare solo per le funzioni di aiuto ricorsive.
Se non si chiama la funzione in altri punti, non riesco a capire perché questa sarebbe una cosa negativa. – OptimusCrime