gpt4 book ai didi

python - 相当于python中R的 `do.call`

转载 作者:行者123 更新时间:2023-11-28 20:39:16 24 4
gpt4 key购买 nike

在 python 中是否有等同于 R 的 do.call 的方法?

do.call(what = 'sum', args = list(1:10)) #[1] 55
do.call(what = 'mean', args = list(1:10)) #[1] 5.5

?do.call
# Description
# do.call constructs and executes a function call from a name or a function and a list of arguments to be passed to it.

最佳答案

没有内置的,但很容易构造一个等价物。

您可以使用 __builtin__ 从内置命名空间中查找任何对象(Python 2)或 builtins (Python 3) 模块然后使用 *args**kwargs 语法向其应用任意参数:

try:
# Python 2
import __builtin__ as builtins
except ImportError:
# Python 3
import builtins

def do_call(what, *args, **kwargs):
return getattr(builtins, what)(*args, **kwargs)

do_call('sum', range(1, 11))

一般来说,我们不会在 Python 中这样做。如果必须将字符串翻译成函数对象,一般首选构建自定义字典:

functions = {
'sum': sum,
'mean': lambda v: sum(v) / len(v),
}

然后从该字典中查找函数:

functions['sum'](range(1, 11))

这让您可以严格控制哪些名称可用于动态代码,防止用户通过调用内置函数来产生破坏性或破坏性效果而对自己造成滋扰。

关于python - 相当于python中R的 `do.call`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38722804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com