Soy un principiante en python, y acabo de aprender una técnica que involucra diccionarios y funciones. La sintaxis es fácil y parece algo trivial, pero mis sentidos de pitón tiemblan. Algo me dice que este es un concepto profundo y muy pitónico y no estoy comprendiendo su importancia. ¿Alguien puede ponerle un nombre a esta técnica y explicar cómo / por qué es útil?
La técnica es cuando tienes un diccionario de Python y una función que tienes la intención de usar. Inserta un elemento adicional en el dict, cuyo valor es el nombre de la función. Cuando esté listo para llamar a la función, emite la llamada indirectamente haciendo referencia al elemento dict, no a la función por su nombre.
El ejemplo con el que estoy trabajando es de Learn Python the Hard Way, 2nd Ed. (Esta es la versión disponible cuando se registra a través de Udemy.com ; lamentablemente, la versión HTML gratuita en vivo actualmente es Ed 3, y ya no incluye este ejemplo).
Parafrasear:
# 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
Entonces las siguientes expresiones son equivalentes. Puede llamar a la función directamente o haciendo referencia al elemento dict cuyo valor es la función.
>>> find_city (cities, 'New York')
NY
>>> cities['_found'](cities, 'New York')
NY
¿Alguien puede explicar qué característica del lenguaje es esta y tal vez dónde se juega en la programación "real"? Este ejercicio de juguete fue suficiente para enseñarme la sintaxis, pero no me llevó hasta allí.