Python Language
オペレータの優先順位
サーチ…
前書き
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