Soy un principiante de python, y acabo de aprender una técnica que incluye diccionarios y funciones. La sintaxis es fácil y parece algo trivial, pero mis sentidos python están hormigueando. Algo me dice que este es un concepto profundo y muy pitón y no estoy entendiendo su importancia. ¿Alguien puede ponerle un nombre a esta técnica y explicar por qué / por qué es útil?
La técnica es cuando tienes un diccionario de python y una función que pretendes usar en él. Usted 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, emita la llamada indirectamente refiriéndose al elemento dict, no a la función por su nombre.El ejemplo del que estoy trabajando es de Learn Python the Hard Way, 2nd Ed. (Esta es la versión disponible cuando te registras en Udemy.com ; por desgracia, la versión HTML gratuita en vivo actualmente es Ed 3, y ya no incluye este ejemplo).
Parafraseando:
# 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 de idioma es esta, y quizás 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í.