在 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
。
关于python - 可以像 JavaScript 一样定义函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799050/