1

次の操作を評価すると

0 if True else 1 + 1 if False else 1

ただし、次のように括弧で書くと0に評価されます

( 0 if True else 1 ) + ( 0 if False else 1 )

最初のケースで何が起こっているのか、正しく 1 に評価されます。

4

3 に答える 3

11
0 if True else 1 + 1 if False else 1

実際には:

(0) if (True) else ((1 + 1) if (False) else (1))

これは間違いなくあなたが望むものとは異なります:

((0) if (True) else (1)) + ((1) if (False) else (1))
于 2012-08-12T12:50:42.017 に答える
3

as ternary operatoris read fromleft to right であり+、条件演算子よりも優先順位が低くなります。したがって、これら 2 つは同等です。

>>> 0 if True else 1 + 1 if False else 1
0
>>> 0 if True else ( (1 + 1) if False else 1)
0
于 2012-08-12T12:57:21.797 に答える
-1

三項演算子は「条件?真の場合の値:偽の場合の値」のように見えますが、Python ではサポートされていないようですが、if-else を使用して置き換えることができます。stype は「条件 if (b_1) else b_2」のようなものです。 b_1 が True の場合、値は条件であり、b_2 が True の場合、値は b_2 です。

于 2012-08-12T14:27:55.287 に答える