在下面的代码中,我尝试将多个函数存储为字典的值。这段代码不起作用。这两个函数作为元组返回。但是我不想在词典上喋喋不休。我想使用一个特殊的键,然后我希望字典运行这两个函数。
from functools import partial
def test_1(arg_1 = None):
print "printing from test_1 func with text:", arg_1
def test_2(arg_2 = None):
print "printing from test_2 func with text:", arg_2
dic = {'a':(partial(test_1, arg_1 = 'test_1'),
partial(test_2, arg_2 = 'test_2'))}
dic['a']()
答案 0 :(得分:2)
您可以构建一个闭包来执行此操作:
def chain_funcs(*funcs):
"""return a callable to call multiple functions"""
def call_funcs(*args, **kwargs):
for f in funcs:
f(*args, **kwargs)
return call_funcs
def test_1(arg_1=None):
print("printing from test_1 func with text: %s" % arg_1)
def test_2(arg_2=None):
print("printing from test_2 func with text: %s" % arg_2)
from functools import partial
dic = {'a': chain_funcs(partial(test_1, arg_1='test_1'),
partial(test_2, arg_2='test_2'))}
dic['a']()
printing from test_1 func with text: test_1
printing from test_2 func with text: test_2