Я новичок в питоне, и я только что изучил технику, включающую словари и функции. Синтаксис прост, и это кажется тривиальной вещью, но мои чувства питона покалывания. Что-то подсказывает мне, что это глубокая и очень питоническая концепция, и я не совсем понимаю ее важность. Может кто-нибудь дать название этой технике и объяснить, как / почему она полезна?
Техника заключается в том, когда у вас есть словарь Python и функция, которую вы собираетесь использовать в нем. Вы вставляете дополнительный элемент в dict, значением которого является имя функции. Когда вы готовы вызвать функцию, вы выполняете вызов косвенно , ссылаясь на элемент dict, а не на функцию по имени.
Пример, из которого я работаю, - «Изучите Python: трудный путь», 2-е изд. (Эта версия доступна, когда вы регистрируетесь через Udemy.com ; к сожалению, в настоящее время бесплатной бесплатной HTML-версией является версия Ed 3, которая больше не включает этот пример).
Перефразировать:
# 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
Тогда следующие выражения эквивалентны. Вы можете вызвать функцию напрямую или путем ссылки на элемент dict, значением которого является функция.
>>> find_city (cities, 'New York')
NY
>>> cities['_found'](cities, 'New York')
NY
Может кто-нибудь объяснить, что это за языковая функция, и, возможно, где она играет в "реальном" программировании? Этого игрушечного упражнения было достаточно, чтобы научить меня синтаксису, но оно меня не охватило.