Pythonの演算子概観
Pythonでは、データ操作や条件制御、文字列処理など多様なタスクを支えるために、豊富な演算子が提供されています。以下に主要なカテゴリとその特徴を整理し、実用的なコード例とともに解説します。
論理演算子:and / or / not
Pythonの論理演算子は短絡評価(short-circuit evaluation)を採用しており、左から右へ順に評価され、結果が確定した時点で残りの式は評価されません。
# and の動作例:左辺が偽なら右辺は評価されない
result_a = 0 and "hello" # → 0(int型の0はFalse相当)
result_b = 42 and "world" # → "world"(左辺がTrue相当なので右辺が返される)
# or の動作例:左辺が真なら右辺は評価されない
default_value = None or "fallback" # → "fallback"
flag = True or expensive_function() # expensive_function() は実行されない
連続比較も自然にサポートされます:
is_valid = 15 > 10 > 5 # 内部的には (15 > 10) and (10 > 5) と等価
print(is_valid) # True
文字列フォーマット:旧式 % 表記
古くからあるが依然利用される % 演算子によるフォーマット。型指定子と値の対応は以下の通りです:
%s:任意のオブジェクト(str()で変換可能)%d:整数(小数点以下は切り捨て)%f:浮動小数点数(デフォルト6桁)%.2f:小数点以下2桁(四捨五入)
# 位置指定方式
template1 = "名前:%s、年齢:%d、評価:%0.1f" % ("佐藤", 28, 4.67)
# → "名前:佐藤、年齢:28、評価:4.7"
# 名前指定方式(辞書展開)
template2 = "氏名:%(name)s、部署:%(dept)s" % {"name": "田中", "dept": "開発部"}
# → "氏名:田中、部署:開発部"
算術・比較・代入演算子
基本的な四則演算(+, -, *, /, //, %, **)、比較(==, !=, <, >, <=, >=)、複合代入(+=, -=, *=など)は他の言語と同様に動作します。
メンバーシップとアイデンティティ演算子
in/not in はコレクション内での存在確認に使用します。
fruits = ["apple", "banana", "cherry"]
has_banana = "banana" in fruits # True
is と == の違いは重要です:
==:値の等価性を判定(__eq__メソッド呼び出し)is:同一オブジェクト(メモリ上の同一アドレス)かを判定(id()の一致)
a = 100
b = 100
print(a == b) # True
print(a is b) # True(-5〜256の整数はインターン済み)
x = 1000
y = 1000
print(x == y) # True
print(x is y) # False(範囲外のため別オブジェクト)
ビット演算子
整数に対してビット単位の操作が可能です:&, |, ^, ~, <<, >>。たとえばフラグ管理や低レベル処理で活用されます。
演算子の優先順位
複雑な式では、暗黙の優先順位に依存せず、明示的な括弧によるグループ化を推奨します。一例として、以下の優先度順(高→低)があります:
- カッコ
() - 指数
** - 乗算・除算・剰余
*, /, //, % - 加算・減算
+, - - 比較・メンバーシップ・アイデンティティ
==, <, in, isなど - 論理 NOT
not - 論理 AND
and - 論理 OR
or
詳細な優先順位表は公式ドキュメントや信頼できる学習リソースで確認できます。