eval String-cmp-operator?

ste*_*ten -2 python comparison eval

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

 def cmp(arg1, op, arg2) : ......
Run Code Online (Sandbox Code Playgroud)

进而 :

 cmp(5, "==", 6)
 cmp(7, ">", 6)
 cmp(12, "<=", 34)
 cmp("abc", "==", "bad")
Run Code Online (Sandbox Code Playgroud)

小智 7

您应该避免使用 eval,而是使用 operator 模块。

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)
Run Code Online (Sandbox Code Playgroud)