Оператор python if с переменным математическим оператором

Привет, я пытаюсь вставить переменный математический оператор в оператор if, пример того, чего я пытаюсь достичь: -

maths_operator = "=="

if "test" maths_operator "test":
       print "match found"

maths_operator = "!="

if "test" maths_operator "test":
       print "match found"
else:
       print "match not found"

очевидно, что это не выполняется с SyntaxError: invalid syntax. Я пробовал использовать exec и eval, но не работал в инструкции if, какие параметры мне нужно обойти?

Ответы

Ответ 1

Используйте пакет оператора вместе со словарем для поиска операторов в соответствии с их текстовыми эквивалентами. Все они должны быть либо унарными, либо бинарными операторами, чтобы работать последовательно.

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

maths_operator = "=="

if ops[maths_operator]("test", "test"):
    print "match found"

maths_operator = "!="

if ops[maths_operator]("test", "test"):
    print "match found"
else:
    print "match not found"

Ответ 2

Используйте модуль operator:

import operator
op = operator.eq

if op("test", "test"):
   print "match found"

Ответ 3

Я пробовал использовать exec и eval, но не работал в выражении if

Для полноты нужно упомянуть, что они действительно работают, даже если опубликованные ответы обеспечивают лучшее решение. Вам нужно будет eval() сравнить все, а не только оператор:

maths_operator = "=="

if eval('"test"' + maths_operator '"test"'):
       print "match found"

или выполните строку:

exec 'if "test"' + maths_operator + '"test": print "match found"'