web-dev-qa-db-ja.com

python関数に演算子を渡す方法は?

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

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

そしてそれを呼び出す

get_truth(1.0,'>',0.0)

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

35
philshem

operator module を見てください:

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
54
grc

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

import operator

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

get_truth(1.0, operator.gt, 0.0)

本当に文字列を演算子として使用する場合は、@ alecxeが推奨するように、文字列から演算子関数への辞書マッピングを作成します。

12
Viktor Kerkez