I am trying to write a method that evaluates a statement, but the operator (>, <, =) is sent by the user. I am wondering if there is a easy way to write a more concise method.
The simplified version of the code is:
def comparsion(val1: int, val2: int, operator: str):
if operator == ">":
if val1 > val2:
return True
elif operator == "=":
if val1 == val2:
return True
elif operator == "<":
if val1 < val2:
return True
The only thing that changes in each case is the operator, I am wondering if there is a more efficient way to write this.
Use the operator
module, which provides named functions for all the standard operators. Then you can use a dictionary to map from the operator string to the corresponding function.
from operator import lt, gt, eq
ops = {'<': lt, '>': gt, '=': eq}
def comparsion(val1: int, val2: int, operator: str):
return ops[operator](val1, val2)