🐍Pythonセイウチ演算子(:=)で激変!コードが3行→1行になる代入式の使い方

IT・テクノロジー

🐍 Pythonの「:=」を使うとコードが激変する

Pythonでコードを書いていて、「同じ式を2回書くのが面倒だな…」と感じたことはありませんか?例えば、リストの長さを変数に代入してから、その変数を条件分岐で使うときなど、変数への代入と評価を別々の行に書くのが定番でした。

しかしPython 3.8から導入された代入式(通称:セイウチ演算子 :=を使えば、その2行を1行にまとめられます。コードがスッキリし、読みやすさもぐっと向上します。これを習得すれば、あなたのPythonコードは今日から一段階レベルアップします✨

📘 そもそも代入式(セイウチ演算子)とは?

代入式とは、変数への代入と、その値の評価を1行で書ける構文のことです。記号の := がセイウチ(walrus)の目と牙に似ていることから、海外では「walrus operator(セイウチ演算子)」という愛称で呼ばれています🦭

言葉だけだとピンとこないので、具体的なコードで見ていきましょう。

🔧 従来の書き方(代入式なし)

例えば「リスト x の長さが10より大きかったらメッセージと長さを出力する」というコードを普通に書くと、こうなります。

n = len(x)
if n > 10:
    print("リストが長すぎます")
    print(n)

このように、まず len(x)n に代入してから、if で条件を見て、さらに n を出力しています。「代入」と「評価」が別々の行に分かれていますね。

✨ 代入式を使った書き方

これを代入式で書き換えると、こうなります。

if (n := len(x)) > 10:
    print("リストが長すぎます")
    print(n)

if の条件式の中で nlen(x) を代入しつつ、その値が10より大きいかを評価しています。1行で「代入+比較」が完了するので、とてもスッキリしますね。

⚠️ 書くときの注意点

  • 📌 代入には = ではなく := を使う必要があります。
  • 📌 (n := len(x)) > 10 のように丸括弧で囲まないと、比較結果(True/False)が n に代入されてしまうので必ず括弧をつけましょう。

🚀 実用例①:ファイル読み込みがスッキリする

代入式が真価を発揮するのが、「取得して、結果に応じて処理する」系のコードです。例えばファイルを1行ずつ読み込む処理を見てみましょう。

従来の書き方

f = open("text.txt")
line = f.readline()
while line != "":
    print(line)
    line = f.readline()

readline() をループの前と中で2回書く必要があり、ちょっと冗長です。

代入式を使った書き方

f = open("text.txt")
while (line := f.readline()) != "":
    print(line)

while の条件部分で読み込みと代入を同時に行うことで、事前読み込みの行が消えてループも一段スッキリ。実行すれば、ちゃんと1行ずつ読み込めることが確認できます。

🔍 実用例②:正規表現マッチとの相性が抜群

もうひとつ便利な使いどころが、正規表現の re.search() と組み合わせるパターンです。例えば「合計金額は1200円です」という文字列から金額を抽出するコードを書いてみましょう。

代入式を使った書き方

import re
text = "合計金額は1200円です"
if (m := re.search(r"([0-9]+)円", text)) is not None:
    print(m.group())

search の戻り値を m に代入しつつ、None でないかをその場で評価できます。マッチしなかった場合は mNone が入り、if の中の処理はスキップされてプログラムが安全に終了します。

「データを取得して、その結果によって処理を分岐させて、取得した値を使って何かする」——このパターンはPythonコードに頻出するので、覚えておくと一気にコードが洗練されますよ💡

📚 Python学習をさらに加速させる書籍・教材

代入式のような小さな構文知識を積み重ねることで、コードはどんどん読みやすく、書きやすくなっていきます。基礎から応用まで体系的に学びたい方におすすめの書籍をピックアップしました。手元に1冊あると学習効率が段違いです✨

📖 Python入門〜実践に最適な定番書

プログラミング未経験から実務レベルまで導いてくれるロングセラー。代入式のような新しい構文も含め、Pythonの考え方が身につきます。

🐍 Pythonの“クセ”を理解できる中級者向け本

セイウチ演算子のような「知っている人だけが書けるキレイなコード」のテクニックが満載。中級者へのステップアップに最適です。

📕 文法を辞書のように引ける1冊

入門 Python 3 第3版
オライリージャパン
¥4,620(2026/05/15 07:36時点)

Pythonの基本構文を網羅的に解説。代入式や正規表現など、ピンポイントで調べたいときにも頼れる定番書です。

⌨️ 快適コーディングを支える周辺アイテム

長時間のコーディングで疲れにくいキーボードがあると、学習効率も集中力も大きく変わります。

コードとブラウザ(公式ドキュメント)を並べて見られるデュアルディスプレイ環境は、Python学習の生産性を一気に底上げしてくれます。

❓ よくある質問(FAQ)

🤔 Q1. セイウチ演算子はどのバージョンから使える?

A. Python 3.8以降で使えます。それ以前のバージョンでは SyntaxError になるので、利用環境のバージョンを確認してください。

🤔 Q2. 普通の =:= の違いは?

A. = は文(statement)で、それ自体は値を返しません。一方 := は式(expression)なので、代入と同時に値を返すため、ifwhile の条件部分に直接書けるのが特徴です。

🤔 Q3. どんな場面で使うのが効果的?

A. 「関数の戻り値を変数に入れて、その値を条件で評価する」場面に最適です。具体例としては、ファイル読み込みのループ、re.search() の結果判定、APIから取得したデータのチェックなどが挙げられます。

🤔 Q4. 何でもかんでも代入式に書き換えていい?

A. いいえ、使いすぎは逆効果です。条件式の中に複雑な代入を詰め込むと、かえって読みにくくなります。「同じ式を2回書きそうになったら使う」くらいの感覚がちょうど良いです。

🤔 Q5. なぜ「セイウチ」と呼ばれているの?

A. := という記号の見た目が、横向きにしたセイウチの目と牙に似ているためです🦭。英語圏では公式に「walrus operator」と愛称で呼ばれています。

🎯 まとめ:代入式を使いこなしてPython中級者へ

代入式(セイウチ演算子)は派手な機能ではありませんが、知っているだけでコードの見た目が劇的に変わる強力な小技です。「代入してから条件で使う」というパターンに出くわしたら、ぜひ := を思い出してください。

使いどころの感覚を掴めば、あなたのPythonコードはより洗練され、レビューでも「読みやすいね」と言われる1段上のレベルへ進化します🚀。今日学んだ書き方を、さっそくエディタで試してみましょう!

コメント

タイトルとURLをコピーしました