【问题标题】:asking for alternate method apart from eval in python在python中要求除了eval之外的替代方法
【发布时间】:2015-03-11 06:51:06
【问题描述】:

我正在解决的问题:我允许用户在将数据插入数据库并评估这些条件和操作的同时,为制定规则制定条件和行动,我想不出任何其他使用eval ,我为此目的创建的数据结构示例是

action_var = ""
a_hash = {"condition":a_condition,
          "action":a_hash}
a_condition ={"param":"abc",
              "operator":">",
              "value":"cde"}
a_action = {"param":action_var,
            "operation":"=",
            "value":"action

所以我的计划是从用户那里获取条件 ID,从用户那里获取操作 ID,然后使用 eval 来评估表达式。

帮助:我的方向是否正确,是否有其他方法可以做到这一点?

PS:我不能在数据库上使用触发器,我有点使用 lmdb 的 orm 包装器。所以我在基础级别使用写命令。

编辑:我想有多个条件,带和/或混合,带括号。

谢谢

【问题讨论】:

  • Alternative to eval in Python 的可能重复项
  • @ChristianStrempfer 我想有多个条件,带和/或混合,带括号。您提供的替代方案仅对两个参数起作用
  • 链接的问题没有询问两个参数,第二个答案也没有。如果答案不够好,请随意悬赏。

标签: python rules


【解决方案1】:

您不需要使用eval。将这些运算符映射到函数,然后将函数应用于参数。考虑:

>>> import operator
>>> operators = {}
>>> operators['>'] = operator.gt
>>> operators['>'](*[1, 2])
False
>>> 1 > 2
False

【讨论】:

  • 谢谢,但有一个问题,我想有多个条件,带和/或混合,带括号。我将如何实现这一目标?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2017-10-07
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多