python - 可以像 JavaScript 一样定义函数吗?

标签 python function dictionary lambda

在 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/

相关文章:

python - 什么是命名空间对象?

python - Django 为模型表单返回两个单独的 __str__

jquery - 如何使用Ajax调用MVC4传递两个字符串数组

python - 从字典列表中获取值列表?

c++ - 作为键的 vector 如何在 C++ 内部工作?

Python 3.5 if 语句嵌套字典数据 : TypeError

python - 保留拆分字符

python - 在 python 中识别 windows/linux GUI 中的文本以进行自动化测试

python - 在一个函数中调用2个函数

r - 如何使函数返回两列不同类型(R)?