Sono un principiante di Python e ho appena imparato una tecnica che coinvolge dizionari e funzioni. La sintassi è semplice e sembra una cosa banale, ma i miei sensi di pitone sono formicolanti. Qualcosa mi dice che questo è un concetto profondo e molto pitonico e non ne capisco l'importanza. Qualcuno può dare un nome a questa tecnica e spiegare come / perché è utile?
La tecnica è quando hai un dizionario Python e una funzione che intendi utilizzare su di esso. Inserire un elemento aggiuntivo nel dict, il cui valore è il nome della funzione. Quando sei pronto a chiamare la funzione, invii la chiamata indirettamente facendo riferimento all'elemento dict, non alla funzione per nome.
L'esempio dal quale sto lavorando è tratto da Learn Python the Hard Way, 2nd Ed. (Questa è la versione disponibile quando ti iscrivi tramite Udemy.com ; purtroppo la versione HTML gratuita dal vivo è attualmente Ed 3, e non include più questo esempio).
Per parafrasare:
# make a dictionary of US states and major cities
cities = {'San Diego':'CA', 'New York':'NY', 'Detroit':'MI'}
# define a function to use on such a dictionary
def find_city (map, city):
# does something, returns some value
if city in map:
return map[city]
else:
return "Not found"
# then add a final dict element that refers to the function
cities['_found'] = find_city
Quindi le seguenti espressioni sono equivalenti. È possibile chiamare la funzione direttamente o facendo riferimento all'elemento dict il cui valore è la funzione.
>>> find_city (cities, 'New York')
NY
>>> cities['_found'](cities, 'New York')
NY
Qualcuno può spiegare che lingua è questa caratteristica e forse dove si gioca nella programmazione "reale"? Questo esercizio giocattolo è stato sufficiente per insegnarmi la sintassi, ma non mi ha portato fino in fondo.