python是否缺少这一基本的函数式编程特性?

2024-10-01 02:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个类,它允许我保存一个函数(在数据库中)以供以后使用。现在我需要在类中有一个方法,它允许我对某些参数调用这个函数。因为我不知道函数提前有多少个参数,所以我必须将它们作为list传入。这就是问题的症结所在,因为我找不到任何方法让引数从元组中取出它的引数。在LISP中,这很简单,因为有一个关键字(好吧,只有一个字符)“@”,正是为了这个目的:

(defmacro (call function arguments)
 `(,function ,@args))

python会这样做,而我却不知怎的错过了它? 如果没有,有人有创造性的解决方案吗?在


Tags: 方法函数目的数据库参数function关键字call
2条回答

Python使用*进行参数扩展。如果需要关键字参数,请使用**扩展dict。因此,您显示的宏将是:

def call(function, args):
    return function(*args)

但通常Pythonic的方法是直接调用内联。实际上有一个名为apply()的函数正是这样做的,但它被弃用,因为内联方式通常更干净。在

不,这在python中没有丢失。SaltyCrane比我能更好地解释*args和**kwargs的用法。在

相关问题 更多 >