使用字典调用函数-以字典键作为参数,以字典值作为参数[重复]

问题描述 投票:-1回答:1

我得到了一个字典,其键等于函数参数,并且它们的对应值是函数的参数。是否有一种优雅的方法将字典中的值传递给其各自的参数?

如下所示的代码是功能性的,但是并不是很好用,特别是如果功能具有许多参数,并且根据情况的不同,则不需要全部。这样,代码变得非常重复且冗长。

目前最优雅的方法似乎是将重复的,冗长的函数包装在其自己的函数中,而我的函数f后面仅包含美观,易读,能自我解释的代码。

def f(func, d):
    if func == "g1":
        # g1(a= d['a'], b=d['b') # functional, but doesn't look nice
        pass
    elif func == "g2":
        # g2(a2= d['a2'], b2=d['b2'], c2= d['c2']) # functional, but doesn't look nice
        pass
    elif func == "g3":
        wrapper_for_g3(d)

def g3():
    pass

def g1(a, b):
    pass

def g2(a2, b2, c2):
    pass

def wrapper_for_g3(d): #100 parameters, same problem as above
    g3(a1 = d['a1'],  
       # ...
       # ...
       a100=d['a100'],
       )

d1 = dict()
d1["a"] = 1
d1["b"] = 2

d2 = dict()
d2["a2"] = 2
d2["b2"] = 4
d2["c2"] = 8

f("g1")
f("g2")
python parameters function-call optional-arguments
1个回答
0
投票

您可以在Python中使用双星号

def f(func, d):
  func(**d)
© www.soinside.com 2019 - 2024. All rights reserved.