Skip to main content
 首页 » 编程设计

python之python 缺少这个基本的函数式编程功能吗

2025年05月04日8zhujiabin

我有一个 python 类,它允许我保存一个函数(在数据库中)供以后使用。现在我需要在类中有一个方法,允许我在某些参数上调用这个函数。因为我不知道函数有多少个参数提前,所以我必须将它们作为列表传递。这就是事情分崩离析的地方,因为我找不到任何方法让参数从元组中获取参数。在 LISP 中这很容易,因为有一个关键字(好吧只有一个字符)“@”就是为了这个目的:

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

python 会这样做吗?我只是不知何故错过了它? 如果没有,是否有人有创造性的解决方案?

请您参考如下方法:

Python 使用 * 进行参数扩展。如果您需要关键字参数,请使用 ** 扩展字典。所以你展示的宏是:

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

但通常 Pythonic 方式是直接进行内联调用。实际上有一个名为 apply() 的函数可以执行此操作,但它已被弃用,因为内联方式通常更简洁。