サーチ…


前書き

Python演算子には優先順位が設定されているため、あいまいな式で最初に評価される演算子が決まります。たとえば、式3 * 2 + 7では、最初の3が2で乗算され、結果が7に加算されて13になります。*は+よりも高い優先順位を持つため、逆の評価はされません。

以下は、優先順位による演算子のリストと、それらが(通常)行うことの簡単な説明です。

備考

Pythonのドキュメントから:

次の表は、最も低い優先順位(最小のバインディング)から最も高い優先順位(ほとんどのバインディング)まで、Pythonの演算子の優先順位をまとめたものです。同じボックス内の演算子は同じ優先順位を持ちます。構文が明示的に与えられていない限り、演算子はバイナリです。同じボックスグループ内の演算子は、左から右への優先順位と連鎖がすべて同じで、右から左にグループ化された累乗を含むテストを含めて、左から右への演算子です。

オペレーター説明
ラムダラムダ式
if - else 条件式
またはブールOR
そしてブールAND
xでないブールNOT
<、<>、> =、<>、!=、== メンバーシップテストとアイデンティティテストを含む比較
| ビット単位OR
^ ビット単位XOR
そして、 ビット単位AND
<<、>> シフト
+、 - 足し算と引き算
*、/、//、% 乗算、除算、剰余[8]
+ x、-x、〜x 正、負、ビットNOT
** 指数関数[9]
x [index]、x [index:index]、x(arguments ...)、x.attribute サブスクリプション、スライシング、コール、属性参照
(式...)、[式...]、{キー:値...}、式... バインディングまたはタプル表示、リスト表示、辞書表示、文字列変換

シンプルな演算子の優先順位の例

PythonはPEMDASルールに従います。 PEMDASは、括弧、指数、掛け算と除算、加算と減算の略です。

例:

>>> a, b, c, d = 2, 3, 5, 7
>>> a ** (b + c)  # parentheses
256
>>> a * b ** c  # exponent: same as `a * (b ** c)`
7776
>>> a + b * c / d  # multiplication / division: same as `a + (b * c / d)`
4.142857142857142

エクストラ:数学的なルールは成立しますが、 必ずしもそうではありません

>>> 300 / 300 * 200
200.0
>>> 300 * 200 / 300
200.0
>>> 1e300 / 1e300 * 1e200
1e+200
>>> 1e300 * 1e200 / 1e300
inf


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow