Есть ли способ сохранить функцию в списке или словаре, чтобы при вызове индекса (или ключа) она сохраняла сохраненную функцию?

Например, я пробовал такие вещи, какmydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()], который не работает.

Есть ли какая-то структура с такой функциональностью?

Я понимаю, что я, очевидно, мог бы сделать это так же легко с кучейdef заявления:

def func1():
    foo()
    bar()
    goo()

Но количество утверждений, которые мне нужны, становится довольно громоздким и запоминающимся. Было бы хорошо обернуть их в словарь, который я мог бы исследовать ключи время от времени.

 Dominic Bou-Samra09 февр. 2012 г., 04:43
Вы описали функциональное программирование, не осознавая этого: P

Ответы на вопрос(2)

Позволятьfoo1(), foo2(), foo3()... быть функциями

определятьfoo нравится:

foo = lambda n: eval("foo"+str(n))

Теперь вы можете перебирать их.

for i in range(n):
    foo(i)()

n это числоfoo функции определены. Этот способ пригодится, если вы не хотите всегда добавлять вновь определенныеfoo введите функции в список.

Редактировать:

Важный!!

Пожалуйста, посмотрите наэто.

Решение Вопроса

поэтому вы можете отправлять их, используя словарь. Например, еслиfoo а такжеbar являются функциями, иdispatcher словарь, как это.

dispatcher = {'foo': foo, 'bar': bar}

Обратите внимание, что значенияfoo а такжеbar которые являются объектами функции, а НЕfoo() а такжеbar().

Звонитьfooможно просто сделатьdispatcher['foo']()

РЕДАКТИРОВАТЬ: Если вы хотите запуститьмножественный Функции хранятся в списке, вы можете сделать что-то вроде этого.

dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}

def fire_all(func_list):
    for f in func_list:
        f()

fire_all(dispatcher['foobar'])
 Praveen Gollakota09 февр. 2012 г., 04:55
@Zack Добавлены подробности о нескольких функциях в списке
 Muyide Ibukun30 мар. 2017 г., 16:20
аккуратный и чистый, хорошо объяснил
 Zack09 февр. 2012 г., 04:48
Ухоженная! Могу ли я сохранить несколько функций в значении? Поэтому, когда я звоню ключу[foo]() он запускает все функции, хранящиеся в значении?

Ваш ответ на вопрос