-2
有没有一种方法来评估比较运算符作为字符串传递的比较。没有做很多if-else的。 F.E.eval String-cmp-operator?
def cmp(arg1, op, arg2) : ......
然后:
cmp(5, "==", 6)
cmp(7, ">", 6)
cmp(12, "<=", 34)
cmp("abc", "==", "bad")
有没有一种方法来评估比较运算符作为字符串传递的比较。没有做很多if-else的。 F.E.eval String-cmp-operator?
def cmp(arg1, op, arg2) : ......
然后:
cmp(5, "==", 6)
cmp(7, ">", 6)
cmp(12, "<=", 34)
cmp("abc", "==", "bad")
你应该避免使用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)
正如我在评论中提到的这是工作版本 – user1019129
您可以使用eval或更好的映射到操作符函数。你尝试过什么吗?发生了什么? – jonrsharpe
但这并不意味着我必须将其转换为字符串...然后我有其他类型的更复杂的类来比较。 – user1019129
将什么转换为字符串?例如。 '“==”'*已经是一个字符串*。什么*“更复杂的类”*;他们不执行'__eq__'吗? – jonrsharpe