在 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 的方式来完成这样的事情?
请您参考如下方法:
使用类(带有静态方法)而不是字典来包含您的函数。
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)
注意您还可以为您的功能使用模块并使用 import。
