**正确地**从字符串创建 lambda 函数

2024-04-01

给定一个字符串,例如

"2*(i+j) <= 100"

我想生成相应的lambda函数,

fn = lambda i,j: 2*(i+j) <= 100
  • 我可以这样做eval,但我正在寻找一种不那么邪恶的方法。

  • 我已经发现

    import ast
    f = ast.Lambda('i,j', '2*(i+j) <= 100')
    

    但我还没弄清楚如何执行结果!

  • 理想情况下,我也想自动提取参数列表('i','j') - 现在,我只是使用 re.findall('\w+'),但我希望能够正确地使用现有功能,例如cos而不是将它们隐藏为“关键字”。


我在看是否有用于处理复杂数学集(使用数学集构建器符号构建)的 Python 库? https://stackoverflow.com/questions/11110595/is-there-a-python-library-for-handling-complicated-mathematical-sets-constructe并尝试找出如何最好地将集合构建器符号解析为 lambda 以便提供给约束求解器。

我基本上希望 ast.literal_eval 也能识别变量。

理想情况下,给定i >= 20我想回来((lambda x: x >= 20), ['i'])然后我可以直接喂给constraint.


您正在寻找替代方案eval, 但为什么?你接受任意代码并执行它,所以为什么不使用eval?避免的唯一理由eval是因为它很危险,但你最终创建的 lambda 也同样危险。

另外,请记住,你确实无法确保在 CPython 中安全地执行此操作 http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html

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

**正确地**从字符串创建 lambda 函数 的相关文章

随机推荐

  • Python 输出格式

    你好 我搜索过输出格式 但格式没有成功 我找不到合适的文档 我真的想了解这段代码是如何工作的 如果有人可以启发我吗 print Survived i 1f len survived float len survived len train
  • 您是否必须 pickle 缩放器和 ML 模型才能部署?

    当使用 sklearn 训练 ML 模型时 我通常使用 sklearn 内置的 StandardScaler 首先将缩放器拟合到训练数据 然后转换训练数据 最后使用相同的 StandardScaler 对象来转换测试数据通过训练数据集中之前
  • \bin 中插入不需要的 SQLite

    我正在使用 Visual Studio 2010 并使用 Web 部署将 Net MVC 站点提升到特定环境 我安装了 Elmah 它在我的 DEV 环境中运行得很好 但是当我推送 TEST 时 我遇到了异常 因为 SQLite 不是一种好
  • Django - 使用子对象过滤查询集(ForeignKey)

    我有 3 个模型 其中 2 个对应第一个模型 class Parent models Model name models CharField class Child1 models Model parent models ForeignKe
  • C 语言中的“{0}”是什么?

    什么是char buf MAXDATASIZE 0 s 0 means 试图打印它 但它什么也没打印 include
  • 检查用户是否使用兼容模式的 IE

    我正在寻找一些代码 PHP 或 JavaScript 可以很好地检查查看页面的用户是否使用兼容模式 然后我可以使用该代码执行一些条件语句 或者基本上给他们一个通知以将其关闭 强迫他们 这将禁用兼容性视图 除非用户随后通过进入开发人员工具并进
  • Spring Security:多个ThreadLocals中有相同的SecurityContext实例,它是如何工作的?

    我有一些关于 Spring Security 3 0 5 和 SecurityContext 的问题 首先 我尝试总结一下我所知道的 SecurityContextHolder 存储 SecurityContext 在Request之间 S
  • 多个 socket.io 服务器共享单个 HTTP/S 服务器

    使用 ws Node js WebSocket 库 可以有多个服务器共享单个 HTTP S 服务器 https github com websockets ws multiple servers sharing a single https
  • iPhone Web 应用程序 - 接听电话时会话和当前 URL 丢失

    我有一个多页面网站 旨在作为 iPhone 上的网络应用程序运行 它具有通常的
  • 如何将 PIL.ImageTk.PhotoImage 保存为 jpg

    我想将 PIL ImageTk PhotoImage 保存到文件中 我的方法是创建一个 打开 文件并调用 写入 方法 但它不起作用 因为我不知道如何从对象获取字节数组 def store temp image data image new
  • 多部分/替代子类型,客户端何时使用它?

    为什么网络邮件 如 Gmail 使用以下方式发送 MIME 消息多部分 替代子类型 当用 HTML 编写时 而其他人将 HTML 作为 MIME 发送 其中包含文本 html 部分 不使用替代子类型 The 第5 1 4节 https ww
  • 复杂类型作为数组索引

    array 对象 obj other obj PHP 数组仅适用于标量数据类型 如 int string float boolean null 的索引 我不能像其他语言一样使用对象作为数组索引吗 那么如何实现对象 gt 对象映射呢 虽然我在
  • 在 Rust 中将递归函数转换为迭代器的技术?

    我正在努力将一个简单的递归函数变成一个简单的迭代器 问题在于递归函数在其局部变量和调用堆栈中维护状态 将其转换为 Rust 迭代器意味着基本上将所有函数状态外部化为某些自定义迭代器结构上的可变属性 这是一个相当混乱的尝试 在 javascr
  • Git Pull Force 覆盖本地文件

    Git 拉力 git 将分支重置到原点 或者换句话说 拉取远程分支以覆盖本地分支 似乎是一个被广泛搜索的功能 尽管本地搜索量很少下降 但人们的兴趣却越来越大 对于不断壮大的团队和不断增加的开发人员数量来说 这绝对有意义 目前 最短的工作解决
  • 如何将我的 Magento 迷你搜索表单移动到模板标题中的另一个位置?

    我正在构建我的第一个自定义 Magento 主题 虽然进展缓慢 但是is去 我去掉了主页上最初保存迷你搜索表单的栏 而是想将搜索表单放入新标题中 这是我的标题的代码header phtml div a href title class lo
  • Kafka应用程序启动时无法配置主题,但稍后可以通信

    我们有一个使用 spring kafka 2 2 5 RELEASE 的 Spring Boot 应用程序 在启动时总是出现此错误 Could not configure topics org springframework kafka K
  • 如何对齐指针

    如何将指针与 16 字节边界对齐 我找到了这段代码 不确定是否正确 char p malloc 1024 if unsigned long p 16 0 unsigned char chpoint unsigned char p chpoi
  • pandas 在多列上搜索子字符串

    我有一个 df 这样 c name f name 0 abc abc12 1 xyz abc1 2 mnq mnq2 目标是在两列中找到一个子字符串并知道它属于哪一列 优先选择应该是c name 就像子字符串在两列中一样c name获得优先
  • 学习 XQuery 的简单工具? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始玩XQuery 在 w3schools 1 上 这是一个很好的教程 我只是遇到一些问题 我无法测试网站上的内容 我在网上找到了一个X
  • **正确地**从字符串创建 lambda 函数

    给定一个字符串 例如 2 i j lt 100 我想生成相应的lambda函数 fn lambda i j 2 i j lt 100 我可以这样做eval 但我正在寻找一种不那么邪恶的方法 我已经发现 import ast f ast La