eval String-cmp-operator?

时间:2017-06-14 20:57:05

标签: python comparison eval

有没有办法评估比较运算符作为字符串传递的比较。没有做很多if-else的。 F.e。

 def cmp(arg1, op, arg2) : ......

然后:

 cmp(5, "==", 6)
 cmp(7, ">", 6)
 cmp(12, "<=", 34)
 cmp("abc", "==", "bad")

1 个答案:

答案 0 :(得分:3)

您应该避免使用eval,而是使用操作员模块。

import operator
ops = {
    '<': operator.lt,
    '<=': operator.le,
    '==': operator.eq,
    '!=': operator.ne,
    '>=': operator.ge,
    '>': operator.gt
}

def cmp(arg1, op, arg2):
    operation = ops.get(op)
    return operation(arg1, arg2)