Sono un principiante pitone e ho appena imparato una tecnica che coinvolge dizionari e funzioni. La sintassi è facile e sembra una cosa banale, ma i miei sensi pitone sono pizzicanti. Qualcosa mi dice che questo è un concetto profondo e molto pitonico e non ne sto proprio afferrando 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 usare su di esso. Si inserisce un elemento extra nel dict, il cui valore è il nome della funzione. Quando sei pronto a chiamare la funzione, emetti la chiamata indirettamente facendo riferimento all'elemento dict, non alla funzione per nome.L'esempio da cui lavoro proviene da Learn Python the Hard Way, 2nd Ed. (Questa è la versione disponibile quando ti iscrivi attraverso Udemy.com ; purtroppo versione HTML gratuita in tempo reale è attualmente in 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. Puoi chiamare direttamente la funzione 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 quale caratteristica linguistica è questa, e forse dove si tratta di giocare nella programmazione "reale"? Questo esercizio giocattolo è stato sufficiente per insegnarmi la sintassi, ma non mi ha portato fino in fondo.