相当于Python中R的`do.call`

2024-01-04

有没有相当于R的do.call在Python中?

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__ https://docs.python.org/2/library/__builtin__.html(Python 2)或builtins https://docs.python.org/3/library/builtins.html(Python 3) 模块然后将任意参数应用于*args and **kwargs syntax:

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))

这使您可以严格控制动态代码可以使用哪些名称,从而防止用户通过调用内置函数来产生破坏性或破坏性效果,从而给自己带来麻烦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相当于Python中R的`do.call` 的相关文章

随机推荐

  • DrawText 与 TextOut Win32

    我发现以前使用过这两个功能 但我不太明白它们之间的区别 好吧 我知道DrawText需要一个格式化矩形 并且可以进行一些文本格式化 而textout仅起始坐标 还有其他区别吗 DrawText http msdn microsoft com
  • 如何让点击手机的搜索按钮不执行任何操作?

    我正在尝试设置一个屏幕 以便当您单击手机底部的放大镜时 它不会在屏幕顶部显示标准搜索区域 本质上 让它忽略 或抓住它 我无能为力 当点击放大类时 覆盖请求搜索时 http developer android com reference an
  • .NET 6如何在program.cs中自动运行迁移

    在 Net 5中 我们可以通过将DataContext传递给Configure方法来调用迁移 并在启动类中调用迁移 public void Configure IApplicationBuilder app IWebHostEnvironm
  • 是否可以阻止 iPhone 将“光泽”添加到我的应用程序图标中?

    当您在 XCode 中为应用程序定义图标 然后在模拟器或真实设备上运行它时 该图标会自动修剪 使其具有圆形边缘 并在图标顶部应用 光泽 光泽 我想去掉这种光泽 因为它模糊了我的图标中的一些细节 似乎其他一些应用程序能够完成此任务 有人知道它
  • 来自二维向量的 pybind11 数组,无副本

    如何从 pybind11 中的向量向量创建 2d numpy 数组 我正在寻找一种快速且无需复制的方法 所以移动 并且我想以模板化的方式进行 到目前为止我有 template lt typename T gt py array array2
  • 合并地图而不覆盖键

    我有一个 clojure 函数 它返回一系列单键映射 我想将这些地图合并为一张地图 但是 如果存在具有相同键的映射 我不想覆盖这些值 只想将它们组合成一个向量 merge似乎覆盖了 并且merge with似乎严重扭曲了类型 I have
  • C# 中的 RSA 签名和使用 Crypto++ 的 C++ 验证

    由于该类 我正在尝试在 C 中签署一些字节RSAC加密服务提供者 https msdn microsoft com fr fr en en en en library system security cryptography rsacryp
  • 包括 iOS8 的 WebKit 框架验证失败

    我正在使用 WebKit 框架的 WKWebView 当尝试提交到应用程序商店时 出现以下错误 Your app contains non public API usage Please review the errors correct
  • Rust 告诉“值在循环的上一次迭代中移动到这里”

    我正在实现一个解析器组合器库 derive Debug enum Parser Char char Positive Box
  • 线串之间的相似度

    我有 GPS 记录的许多轨迹 更正式地可以将其描述为许多线串 现在 某些记录的轨迹可能是同一路线的记录 但由于 GPS 系统的不准确性 事实上 记录是在不同的场合进行的 并且它们可能是以不同的速度记录的 因此它们不会完美匹配 但当人类在地图
  • Rust 中元组的求值顺序是什么?

    元组元素可能有副作用 其中一些可能依赖于其他元素 考虑这个程序 fn main let mut v vec 1 2 match v pop v pop Some z Some y gt println y z y z gt unreacha
  • 如何更改标记颜色?谷歌地图[重复]

    这个问题在这里已经有答案了 function createMarker latlng item var marker new google maps Marker position latlng map map 这部分代码 在网站上 它显示
  • 编译器为类创建的所有成员函数有哪些?这种情况经常发生吗?

    编译器为类创建的所有成员函数有哪些 这种情况经常发生吗 像析构函数 我关心的是它是否是为所有类创建的 为什么需要默认构造函数 C 98 03 如果需要的话 编译器会生成一个默认构造函数除非您声明自己的任何构造函数 编译器会生成一个copy
  • 如何在Gridview中添加标题和子标题

    Could Anyone explain How to add Header and Subheader in Gridview shown in the below picture 嗨 你可以这样做
  • ASP.NET Web API 中除 IQueryable 之外的 OData 查询和类型

    我正在构建一个返回 Atom 或 RSS feed 的 ASP NET Web API 应用程序 为此 它构建了一个System ServiceModel Syndication SyndicationFeed和一个习惯MediaTypeF
  • Favicon 在 IE11 中不工作;适用于 FF 和 Chrome

    问题 我的图标已经在 Firefox 和 Chrome 中工作了 在我的版本 Internet Explorer 11 中 我似乎无法让 d ng 图标工作 我的文件存储为 ico 并且我有一个 Firefox 的替代文件 因为您可以在其中
  • Cripy-forms Helper 不生效

    看来 FormHelper 根本就什么也没做 这是我的表格 class PerguntarForm forms Form title forms CharField label T tulo max length 200 categoria
  • 让 Python 使用我的目录中的代码(而不是 /usr/... 中的代码)

    我正在尝试使用已安装在我的 Ubuntu 系统上的Python库 我检查了该库 编辑了一些文件 并编写了一个小脚本来测试我的更改 尽管我将脚本放在与库相同的文件夹中 但 Python 似乎正在使用已安装的版本 中的版本 usr share
  • 二维数组与数组结构

    我是 C 语言新手 所以我的问题可能不符合高标准 我们可以使用 struct mat int a 10 m 10 代替 int mat 10 10 有什么不同 哪个更有效率 你将会拥有m x a y 这是比更复杂的语法m x y 但在词汇上
  • 相当于Python中R的`do.call`

    有没有相当于R的do call在Python中 do call what sum args list 1 10 1 55 do call what mean args list 1 10 1 5 5 do call Description