7

在 Python 中,如何将类似+<作为参数的运算符传递给需要比较函数作为参数的函数?

def compare (a,b,f):
    return f(a,b)

我已经阅读过类似的功能__gt__()__lt__()但我仍然无法使用它们。

4

3 回答 3

12

操作员模块是您正在寻找的。在那里您可以找到与常用运算符相对应的函数。

例如

operator.lt
operator.le
于 2012-11-09T14:35:04.110 回答
5

为此目的使用操作员模块

import operator
def compare(a,b,func):

    mappings = {'>': operator.lt, '>=': operator.le,
                '==': operator.eq} # and etc. 
    return mappingsp[func](a,b)

compare(3,4,'>')
于 2012-11-09T14:35:31.023 回答
0

使用 lambda 条件作为方法参数:

>>> def yourMethod(expected_cond, param1, param2):
...     if expected_cond(param1, param2):
...             print 'expected_cond is true'
...     else:
...             print 'expected_cond is false'
... 
>>> condition = lambda op1, op2: (op1 > op2)
>>> 
>>> yourMethod(condition, 1, 2)
expected_cond is false
>>> yourMethod(condition, 3, 2)
expected_cond is true
>>> 
于 2014-02-22T15:58:17.753 回答