在Python中,可以用类似于以下JavaScript示例的方式定义一个函数(可以在其中包含语句,因此不是lambda)吗?
var func = function(param1, param2) {
return param1*param2;
};
我问,因为我想要一本函数字典,我不想先定义所有函数,然后将它们放在字典中。
我想要一个函数字典的原因是因为我将有另一个函数将另一个字典作为参数,遍历其键,如果它在第一个字典中找到匹配的键,则调用相关函数的值为第二个字典作为参数。像这样:
def process_dict(d):
for k, v in d.items():
if k in function_dict:
function_dict[k](v)
也许有更多的pythonic方式来完成这样的事情?
答案 0 :(得分:2)
使用类(使用静态方法)而不是字典来包含您的函数。
class MyFuncs:
@staticmethod
def func(a, b):
return a * b
# ... define other functions
在Python 3中,实际上并不需要@staticmethod
,因为类方法无论如何都是简单的函数。
现在迭代:
def process_dict(d):
for k, v in d.items():
getattr(MyFuncs, k, lambda *x: None)(*v)
N.B。您也可以将模块用于您的功能并使用import
。