Python 使用字典调用函数-字典键作为其参数,字典值作为其参数

Python 使用字典调用函数-字典键作为其参数,字典值作为其参数,python,parameters,function-call,optional-arguments,Python,Parameters,Function Call,Optional Arguments,我得到了一个字典,它的键等于函数参数,它们对应的值是函数的参数。是否有一种优雅的方式将字典中的值传递给相应的参数 下面所写的代码是功能性的,但是不是很优雅,特别是如果函数有很多参数,并且根据情况不需要所有参数。代码变得非常重复和冗长 目前最优雅的方式似乎是简单地将重复的、冗长的函数包装在自己的函数中,而我的函数f只包含漂亮、可读、自我解释的代码 def f(func, d): if func == "g1": # g1(a= d['a'], b=d['b') # func

我得到了一个字典,它的键等于函数参数,它们对应的值是函数的参数。是否有一种优雅的方式将字典中的值传递给相应的参数

下面所写的代码是功能性的,但是不是很优雅,特别是如果函数有很多参数,并且根据情况不需要所有参数。代码变得非常重复和冗长

目前最优雅的方式似乎是简单地将重复的、冗长的函数包装在自己的函数中,而我的函数
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中使用双星号

def f(func, d):
  func(**d)

可以在Python中使用双星号

def f(func, d):
  func(**d)

当你打电话给
f(“g1”)
f(“g2”)
时会发生什么?你是在问
g3(**d)
…?!可能您正在寻找
**kwargs
。当您调用
f(“g1”)
f(“g2”)
时会发生什么情况。您是在请求
g3(**d)
…?!您可能正在寻找
**kwargs