Я початківець пітон, і я просто навчився техніці, що включає словники та функції. Синтаксис простий і здається, що це банальна річ, але мої відчуття пітону поколюються. Щось підказує мені, що це глибока і дуже пітонічна концепція, і я не зовсім розумію її значення. Чи може хтось поставити ім’я цій техніці і пояснити, як / чому це корисно?
Ця техніка полягає в тому, що у вас є словник python і функція, яку ви збираєтеся використовувати в ньому. Ви вставляєте додатковий елемент у дікт, значенням якого є назва функції. Коли ви готові зателефонувати в функцію, ви посилаєте виклик опосередковано , посилаючись на елемент dict, а не на функцію по імені.
Приклад, з якого я працюю, - з Learn Python The Hard Way, 2nd Ed. (Ця версія доступна під час реєстрації через 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
Чи може хтось пояснити, що це за мовна особливість, і, можливо, де мова йде про «справжнє» програмування? Цієї іграшкової вправи було достатньо, щоб навчити мене синтаксису, але не вела мене туди.