如何将操作符传递给python函数?

How to pass an operator to a python function?

我想给一个函数传递一个数学运算符和要比较的数值。这是我的密码:

1
2
3
4
5
def get_truth(inp,relate,cut):    
    if inp print(relate) cut:
        return True
    else:
        return False

然后打电话给

1
get_truth(1.0,'>',0.0)

这应该是真的。


有一个模块:look at the operatorP></

1
2
3
4
5
6
7
8
import operator
get_truth(1.0, operator.gt, 0.0)

...

def get_truth(inp, relate, cut):    
    return relate(inp, cut)
    # you don't actually need an if statement here


of strings和社会的映射函数。你不也,if / else condition:needP></

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import operator


def get_truth(inp, relate, cut):
    ops = {'>': operator.gt,
           '<': operator.lt,
           '>=': operator.ge,
           '<=': operator.le,
           '=': operator.eq}
    return ops[relate](inp, cut)


print get_truth(1.0, '>', 0.0)  # prints True
print get_truth(1.0, '<', 0.0)  # prints False
print get_truth(1.0, '>=', 0.0)  # prints True
print get_truth(1.0, '<=', 0.0)  # prints False
print get_truth(1.0, '=', 0.0)  # prints False

fyi eval()is,is using python中的危机:评估亚行的实践?P></


operator模块使用。contains the EN标准的Python开发者,你可以使用。然后利用算子函数:as a theP></

1
2
3
4
5
6
import operator

def get_truth(inp, op, cut):
    return op(inp, cut):

get_truth(1.0, operator.gt, 0.0)

如果你真的想使用字符串作为经营者,然后创建的映射函数从字符串字典alecxe suggested as to社"。P></


1
2
3
4
5
6
7
8
9
>>> def get_truth(inp,relate,cut):
...     if eval("%s%s%s" % (inp,relate,cut)):
...         return True
...     else:
...         return False
...
>>> get_truth(1.0,'>',0.0)
True
>>>


你想使用eval:P></

1
if eval(str(inp) + relate + str(cut)):`