2016-04-25 4 views
0

Я хочу вызвать функцию из словаря. Является ли это возможным? И если да, то как мне это сделать?Вызов функции из словаря

def function(): 
    pass 

my_dic = { 
    'hello': function() 
} 
+1

Пожалуйста, попробуйте выполнить код и дайте нам знать, если у вас есть какие-то конкретные вопросы. – thefourtheye

+0

Это уже ответит здесь: http://stackoverflow.com/questions/3061/calling-a-function-of-a-module-from-a-string-with-the-functions-name-in-python – larslars

ответ

4

Из того, что я понимаю, что вы на самом деле имеете в виду, как сохранить ссылку функцию внутри словаря, чтобы быть в состоянии назвать его позже, после получения его из словаря по ключу. Это возможно, поскольку функции first class objects в Python:

>>> def function(): 
...  print("Hello World") 
... 
>>> d = { 
...  'hello': function # NOTE: we are not calling the function here - just keeping the reference 
... } 
>>> d['hello']() 
Hello World 

Соответствующие нити с некоторыми образцами использования:

2

Да, это возможно. Как и другие типы, функции могут храниться в словаре. Проблема в вашем коде заключается в том, что вы сохраняете возвращаемое значение функции (то есть None в этом случае), а не сама функция.

Снимите скобку (), и вы должны быть хорошо идти:

>>> my_dic = { 
... 'hello': function 
... } 

>>> my_dic['hello']() 
None 
Смежные вопросы