「変数に代入しながら条件チェックもしたい…でも2行書くの、ちょっとくどいよな」🙄
そんなふうに感じたことありませんか?実はPython 3.8から、それをスッキリ解決できる構文が登場しています。それがセイウチ演算子(:=)です!
🦭 セイウチ演算子ってなに?

セイウチ演算子(:=)は、正式には代入式(assignment expression)と呼ばれます。名前の由来は見た目。:= がセイウチの顔に見えることから、このニックネームがついたんですよね😄
ざっくり一言でいうと、「式の中で変数に代入しつつ、その値をそのまま使える」構文です。
イメージとしては、代入と条件判定を1行にまとめる魔法のような演算子、と思ってもらえれば大丈夫です。
📝 具体的なコード例で確認しよう
たとえば、こんなシーンを考えてみましょう。リストから条件を満たす値を取り出して処理したいとき、従来はこう書いていたはずです。
# 従来の書き方
data = [5, 12, 3, 18, 7]
for value in data:
result = value * 2 # まず計算して変数に代入
if result > 20: # その後で条件チェック
print(result)
これ、result の代入と条件チェックが別々の行になっていますよね。セイウチ演算子を使うとこうなります👇
# セイウチ演算子を使った書き方
data = [5, 12, 3, 18, 7]
for value in data:
if (result := value * 2) > 20: # 代入しながら条件チェック!
print(result)
ポイントをまとめるとこんな感じです。
- ✅
result := value * 2で計算結果をresultに代入 - ✅ 同時にその値で
> 20の条件チェック - ✅ 1行でスッキリ!
⚠️ 使いどころを間違えると読みにくくなることも
ただし注意が必要です。セイウチ演算子は使い方を誤ると逆に読みにくいコードになります。
次のような「なんでもかんでも1行にまとめる」使い方はオススメしません。
# ❌ やりすぎな例(可読性が下がる)
while chunk := file.read(8192):
if (n := len(chunk)) > 100:
process(chunk, n)
こんなふうに複数のセイウチ演算子を詰め込むと、読む側が一瞬「え、どこで何が代入されてるの?」と混乱しますよね。
使い時のざっくりした判断基準はこちらです。
- 🟢 使って良い場面:同じ計算結果を「条件チェック」と「本文処理」の両方で使いたいとき
- 🟢 使って良い場面:
whileループで読み込みながら終了条件を判定したいとき - 🔴 避けたほうが良い場面:1行に詰め込みすぎて意味が追いにくくなるとき
まとめ
セイウチ演算子(:=)は、Python 3.8以降で使えるとても便利な構文です。「式の中で代入できる」というシンプルなルールを押さえておくだけで、ループや条件式がスッキリ書けるようになります。
ただし、コードの読みやすさが一番大事。「1行にまとめられるから使う」ではなく「読みやすくなるから使う」という視点を忘れずに活用してみてください😊
ぜひ自分のコードのどこかに取り入れて、試してみてくださいね!🦭





