17

私が維持しなければならないプロジェクトには、次のような Python コードがあります。

# If the `factor` decimal is given, compute new price and a delta
factor = +factor.quantize(TWOPLACES)
new_price = +Decimal(old_price * factor).quantize(TWOPLACES)
delta = new_price - old_price

ここでの質問は+、変数の前の目的です。

Python のドキュメントでは、「数値引数を変更せずに返す」単項プラス演算子と呼ばれています。その場合、安全に削除できますか?

(ちなみに、コードは私が少し前に書いたものです。うまくいけば、私は教訓を学んだと思います。テストが存在するかどうか、または小数での単項プラスの使用がコメントで明確にされているかどうかは問題ではありません。)

4

2 に答える 2

19

そのプラス記号が何をするかは、その式の結果によって何をするように定義されているかによって異なります (そのオブジェクトの__pos__()メソッドが呼び出されます)。この場合、それはDecimalオブジェクトであり、単項プラスはplus()メソッドを呼び出すことと同じです。基本的に、数値の符号を変更せずに現在のコンテキスト (精度、丸めなど) を適用するために使用されます。setcontext()他の場所で aまたはlocalcontext()callを探して、コンテキストが何であるかを確認してください。詳細については、こちらを参照してください

単項プラスはあまり使用されないため、この使用法がなじみがないことは驚くことではありません。decimalこのモジュールは、それを使用する唯一の標準モジュールだと思います。

于 2012-05-25T03:46:58.940 に答える