Есть ли способ сравнить две переменные с компаратором, хранящимся в виде строки - PullRequest
1 голос
/ 20 января 2020

Я ищу функцию, которая позволяет мне делать что-то вроде этого:

a = 3
b = 5
comparator = ">"
result = some_function(comparator, a, b)

компаратором может быть любой компаратор (>,> =, <, <=, ==,! =); a и b могут быть любой строкой или любым числом </p>

Я мог бы что-то сделать с огромным списком условий, но некоторая функция уже могла существовать (но не могла найти ее)

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Сопоставить ожидаемые строки с их функциональными аналогами.

import operator

comparators = {
  ">": operator.gt,
  "<": operator.lt,
  # etc
}

result = comparators[comparator](a, b)       
1 голос
/ 20 января 2020

Вы ищете модуль operator :

import operator

symbol_map = {
    '>': operator.gt,
    '>=': operator.ge,
    # and so on
}

def some_function(op, a, b):
    return symbol_map[op](a, b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...