0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python初心者】演算子の優先順位まとめ

Last updated at Posted at 2025-04-20

Pythonを学習していて、ふとこんなコードに出会ったときに「え、どこからどう計算されるの?」と混乱した経験がありました。

3 + 2 > 4 and not False

これは演算子の優先順位(precedence)が関係しています。
この記事では、まずざっくり押さえておくべきポイント
と、詳しい優先順位の表を整理してみました。

簡単に覚えるポイント(超ざっくり)

数値演算子 > 比較演算子 > 論理演算子(not > and > or)
  • +, -, *, / など → 数値の計算系は最優先
  • >, ==, != など → 値を比較する演算子がその次
  • not, and, or論理判断系は最後

演算子の優先順位(詳細)

以下は、優先順位が高い順に並べた表です。
全部を暗記する必要はありませんが、よく使うものから少しずつ慣れていきましょう。

優先度 演算子 説明
1 () 丸括弧(グループ化) (3 + 2) * 420
2 ** べき乗(指数) 2 ** 38
3 +x, -x, ~x 単項演算子 -5, ~2
4 *, /, //, % 掛け算、割り算、切り捨て、余り 10 / 3, 10 % 3
5 +, - 足し算、引き算 5 + 2 - 16
6 <<, >> ビットシフト 1 << 24
7 & ビットAND 5 & 31
8 ^ ビットXOR 5 ^ 36
9 ` ` ビットOR
10 比較演算子 ==, !=, >, <, <= 3 < 5True
11 is, in 同一性・所属判定 x is y, "a" in "abc"
12 not 論理否定 not TrueFalse
13 and 論理積(AND) True and FalseFalse
14 or 論理和(OR) True or FalseTrue
15 if ~ else 条件式(三項演算子) x if cond else y
16 lambda 無名関数 lambda x: x + 1
17 =, +=, -= など 代入演算子 x = 5, x += 2

実際の例で確認してみよう

次の式を一つ一つの優先順位で見ていきます。

result = 3 + 2 > 4 and not False

評価の流れ:

  1. 3 + 25(加算)
  2. 5 > 4True(比較)
  3. not FalseTrue(論理否定)
  4. True and TrueTrue(論理積)

結果:

print(result)  # True

補足:右結合と左結合って何?

演算子には「どちらから結合されるか」というルールがあります。

  • 右結合:右から処理される

    2 ** 3 ** 2  # → 2 ** (3 ** 2) → 512
    
  • 左結合:左から順に処理される(多くの演算子はこちら)

    3 - 2 + 1  # → (3 - 2) + 1 → 2
    

まとめ

  • 複雑な式では、演算子の優先順位を理解しておくことが重要
  • 基本は「数値 > 比較 > 論理」とざっくり覚えるだけでも違う
  • 迷ったときは丸括弧 () を使って明示すると安全

演算子の評価順序は、コードの挙動に直結する大事なルールなので、
今後もコードを書きながら自然に理解を深めていきたいと思います。

参考:公式ドキュメント

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?