64

比較する数値とともに、数学演算子を関数に渡したいと思います。これが私の壊れたコードです:

def get_truth(inp,relate,cut):    
    if inp print(relate) cut:
        return True
    else:
        return False

そしてそれを呼び出す

get_truth(1.0,'>',0.0)

True を返す必要があります。

4

5 に答える 5

91

operator モジュールを見てください:

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
于 2013-09-03T12:01:39.693 に答える
12

モジュールを使用しoperatorます。これには、Python で使用できるすべての標準演算子が含まれています。次に、演算子を関数として使用します。

import operator

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

get_truth(1.0, operator.gt, 0.0)

本当に文字列を演算子として使用したい場合は、@alecxeが提案したように、文字列から演算子関数への辞書マッピングを作成してください。

于 2013-09-03T12:01:38.547 に答える
-1

operator代わりにモジュールを使用してください:

import operator
def get_truth(inp, relate, cut):
    rel_ops = {
        '>': operator.gt,
        '<': operator.lt,
        '>=': operator.ge,
        '<=': operator.le,
        '==': operator.eq,
        '!=': operator.ne
    }
    return rel_ops[relate](inp, cut)
于 2013-09-03T12:01:42.793 に答える