在python中要求除eval之外的替代方法

时间:2015-03-11 06:51:07

标签: python rules

我正在解决的问题:我正在让用户自由地制定条件和行动来制定规则,同时将数据插入数据库并评估这些条件和行动,我想不出任何其他因素使用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来评估表达式。

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

P.S:我不能在数据库上使用触发器,我有点使用lmdb的orm包装器。所以我在基级使用write命令。

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

由于

1 个答案:

答案 0 :(得分:2)

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

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