スポンサーリンク

Pythonのセイウチ演算子とは?代入式「:=」の使い方を初心者向けにやさしく解説!

Python入門

1. はじめに|セイウチ演算子ってなに?なんで便利なの?

Pythonのコードを書いていると、「この変数に値を入れて、すぐにその値を使いたいな〜」って思うことありませんか?
そんなときに使えるのが、**セイウチ演算子(代入式)**という機能です。

これは、Python 3.8から登場した新しい書き方で、:= というちょっと変わった記号を使います。
見た目がセイウチの顔に似ている(?)ことから、「**セイウチ演算子(Walrus Operator)」って呼ばれているんですよ。

たとえば、今まではこんなふうに書いていた処理が…

n = len(my_list)
if n > 5:
print("リストが長いよ!")

セイウチ演算子を使うと、この2行を1行にまとめて書けちゃいます:

if (n := len(my_list)) > 5:
print("リストが長いよ!")

ちょっと便利そうじゃないですか?

このセイウチ演算子を使えば、

  • コードの見た目がスッキリする
  • 同じ処理を何度も書かなくてすむ
    というメリットがあります。

この記事では、そんなセイウチ演算子の基本から、よくある使い方、注意点まで、初心者の方でも分かりやすいように丁寧に紹介していきます!

「え、セイウチ?なにそれ?」って方も、「Pythonでコードをもっとかっこよく書きたい!」という方も、ぜひ最後まで読んでみてくださいね。




2. セイウチ演算子(代入式)の基本構文と注意点

● セイウチ演算子の書き方ってどうなってるの?

セイウチ演算子は、見た目がちょっと変わった記号 := を使います。
これは「代入(=)と評価(チェック)を同時にする」という、ちょっと特別な書き方です。

基本の形:

変数 := 値や関数の結果

たとえば、リストの長さを変数に代入しながら、それが10以上かどうかを調べたいときはこう書きます:

if (n := len(my_list)) >= 10:
print("リストが長いです")

このコードは、次の2つの処理を1行でまとめています:

  1. len(my_list) の結果を n に代入する
  2. n が 10 以上かどうかをチェックする

「1行で2つのことができる」って、なかなか便利ですよね!


● 丸括弧「( )」は必須!つけないとエラーやバグのもとに…

セイウチ演算子を使うときに、絶対に忘れてはいけないことがあります。
それは、丸括弧(かっこ)をつけることです!

✅ OKな例:

if (n := len(my_list)) > 5:
print(n)

❌ NGな例:

if n := len(my_list) > 5:  # ←バグのもと!
print(n)

下のNGな書き方では、「len(my_list) > 5 という結果(TrueまたはFalse)を n に代入する」という、まったく違う意味のコードになってしまいます。

こういった思わぬバグを防ぐためにも、セイウチ演算子を使うときは、かならず ( ) をつけるようにしましょう


● どこで使えるの?

セイウチ演算子は、主に次のような場面でよく使われます:

  • if文やwhile文の条件に「代入+チェック」をまとめたいとき
  • 同じ関数を何度も呼び出すのが面倒なとき
  • ファイルを1行ずつ読み込みながら処理するとき

次は、具体的な例をいくつか紹介していきますね!




3. 使い方の具体例で理解を深めよう

3-1. if文でリストの長さをチェックする例

たとえば、リストの長さが10以上だったら注意メッセージを出したい、そんな場面を考えてみましょう。

まずは、ふつうの書き方(セイウチ演算子なし)から見てみましょう。

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
n = len(x) # リストの長さを変数nに入れる

if n >= 10: # nが10以上ならメッセージを出す
print("リストは長すぎます!")
print(f"要素数:{n}")

このコードでももちろんOKですが、変数nに代入して、またすぐにnを条件に使っているので、「なんか2度手間だな〜」と感じるかもしれません。

ここで、セイウチ演算子の出番です!

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

if (n := len(x)) >= 10:
print("リストは長すぎます!")
print(f"要素数:{n}")

この書き方では、ifの条件の中で、

  1. len(x)n に代入して、
  2. n >= 10 かどうかを同時にチェックしています。

1行で処理がまとまっていて、スッキリして見やすいですよね!


✅ どんなときに便利?

  • 関数の戻り値(結果)をすぐに使いたいとき
  • 条件の中で値を使いまわしたいとき

たとえば、Webスクレイピングで「ページの文字数が1000字以上かどうか」をチェックしつつ、その文字数をあとで表示したいときなどにも応用できます。


3-2. while文でファイルを読み込む例

今度は、「ファイルの中身を1行ずつ読み込んで表示する」例です。
Pythonでは、ファイルを読み込むときによく while ループを使いますよね。

まずは、セイウチ演算子を使わないふつうの書き方から見てみましょう。

file = open("text.txt", "r")  # ファイルを読み込みモードで開く
line = file.readline() # 最初の1行を先に読み込む

while line != '': # 空文字(= 読む行がもうない)になるまで繰り返す
print(line, end='') # 行を表示(改行が含まれているのでend='')
line = file.readline() # 次の行を読み込む

file.close() # ファイルを閉じる

この書き方だと、「先に1行読む」「ループ内でまた読む」と、2回同じ関数 readline() を書く必要があってちょっと面倒です。


ここで、セイウチ演算子の登場です!

file = open("text.txt", "r")

while (line := file.readline()) != '': # 1行読み込みつつ、空かどうかチェック
print(line, end='')

file.close()

どうでしょう?
while の条件の中で、ファイルから1行読み込んだ結果を line に代入し、同時に「空じゃないか?」をチェックしています。
すっきり1行で処理できるようになっています!


✅ こんなときに便利!

  • ファイルやデータを1つずつ読み取ってループしたいとき
  • 事前の読み込み処理を省略したいとき
  • 「読む → チェック →使う」の流れを1か所にまとめたいとき

このように、セイウチ演算子を使えば、ループ処理の中でも「1行でシンプルに書ける」というメリットがあります。


3-3. 正規表現と組み合わせてマッチングする例

ここでは、**正規表現(regex)**とセイウチ演算子を組み合わせて使う例を紹介します。

「正規表現ってなに?」という方は、ざっくり言うと「文字のパターンを探すための特別なルール」です。
たとえば、「〜円」という文字の中から数字だけを取り出すといったことができます。


まずは、セイウチ演算子を使わない書き方から

import re

text = "合計金額は1200円です"
pattern = r"(\d+)円" # 数字1つ以上+円 のパターン

match = re.search(pattern, text) # マッチする文字を探す

if match is not None: # 結果が見つかったかチェック
amount = match.group(1) # 数字だけ取り出す
print(f"金額: {amount}円")

このように、re.search() の結果をいったん match に入れてから、それが None じゃないかを確認して使っています。


ここでセイウチ演算子!

import re

text = "合計金額は1200円です"
pattern = r"(\d+)円"

if (m := re.search(pattern, text)) is not None: # 探して→見つかれば使う
amount = m.group(1)
print(f"金額: {amount}円")

ifの条件の中で、

  1. 正規表現で検索
  2. 結果を変数 m に代入
  3. None じゃないかをチェック

この3つを1行で済ませているんです!
すっきりしていて、読みやすく、効率もアップしますよね。


✅ こんなときに便利!

  • 検索結果があればすぐ使いたいとき
  • エラーにならないように None チェックを忘れたくないとき
  • 1行で代入+チェックをまとめたいとき

セイウチ演算子は、ちょっとした工夫で**「コードを短く、わかりやすく」**してくれる便利な存在なんです。




4. セイウチ演算子を使うときのメリット・デメリット

ここまでの例で、セイウチ演算子 := が「代入」と「条件チェック」を同時にできる、ちょっと便利な機能だということが分かってきたと思います。

でも実際のところ、「セイウチ演算子って、いつ使えばいいの?」「デメリットはないの?」と気になる方も多いはず。

そこでここでは、セイウチ演算子のメリットとデメリットを整理しておきます!


✅ メリット(使うと嬉しいポイント)

① コードが短くなる!

1行で「代入+評価」ができるので、無駄な行数を減らせてスッキリ書けます。
とくに、ifwhile の中で使うときに力を発揮します。

② 処理の重複を減らせる!

同じ関数を何回も呼ぶと処理が重くなることがありますが、セイウチ演算子を使えば1回だけ呼び出して、それを使い回すことができます。

③ 変数をそのまま使えてラク!

if文などのあとで、その変数を使いたいときにも便利です。
「もう一度同じ処理を書く」手間がなくなります。


⚠️ デメリット(注意しておきたいこと)

① 読みにくいと感じる人もいる

Python初心者にとっては、セイウチ演算子の記号 := がちょっと見慣れないので、コードを読んだときに「これなに?」と混乱することがあります。

② 使いすぎると逆にわかりにくくなる

「なんでも1行で書こう!」と頑張りすぎると、かえって読みにくいコードになることも…。
特に複雑な条件式の中に入れると、あとから読む人が困ってしまうかもしれません。

③ Python 3.8以降じゃないと使えない

古いバージョンのPython(3.7以前)では使えないので、Pythonのバージョンにも注意が必要です。


✔ 結論:便利だけど「使いどころ」が大事!

セイウチ演算子は、うまく使えばとても便利なツールです。
でも、「すべての代入をセイウチ演算子で書けばいい!」というわけではありません。

初心者のうちは、「ここで使うとスッキリしそうだな〜」というピンポイントでの使用を意識するといいですよ!




5. まとめ|使いどころを見極めて賢く活用しよう

ここまで、Pythonのセイウチ演算子(:=)について紹介してきました。

セイウチ演算子は、**「代入しながら条件をチェックしたいとき」や「同じ処理を何度も書きたくないとき」**に、とっても役立つ便利な機能です。

使いこなせば、次のようなメリットが得られます。

  • コードが短くなって読みやすくなる
  • 関数の呼び出しが1回で済むので効率的
  • 変数をそのまま使えてスマート

ただし、使いすぎると逆に読みづらいコードになってしまうこともあります。
特に、Pythonに慣れていない人が見ると「これ、なんの記号?」ってなってしまうかも…。

だからこそ大事なのは、**「ここで使うと分かりやすいな」という場面を選んで、うまく活用すること」**です!


たとえばこんな場面が使いどころ:

  • if文でチェックしたい値をあとでも使いたいとき
  • while文でデータを1つずつ読み込みながらループしたいとき
  • 正規表現でマッチした結果をチェックしながら取り出したいとき

Python 3.8以降を使っているなら、ぜひ少しずつ取り入れてみてくださいね!


あわせて読みたい

Pythonのセイウチ演算子を理解したら、次のステップとして知っておくと便利な関連記事を紹介します。コードをもっとスッキリ、効率よく書けるようになりますよ!


📌 Pythonのif文の使い方入門|条件分岐の基本をやさしく解説!
セイウチ演算子をよく使う「if文」の基本を、わかりやすく丁寧に解説した記事です。

📌 Pythonのwhile文の使い方とbreak・continueの違いをやさしく解説!
while文でセイウチ演算子を活用するなら必見!ループ処理の基本と便利な制御方法を学べます。

📌 Python正規表現の使い方入門|reモジュールで文字列を簡単マッチング!
正規表現とセイウチ演算子を組み合わせて、スマートな文字列処理に挑戦しましょう。


よくある質問(Q&A)

Q
セイウチ演算子はPythonのどのバージョンから使えますか?
A

Python 3.8 から使えるようになりました。
Python 3.7以前の環境では使えないので、バージョンが古い方は python --version などで確認しておきましょう。

Q
セイウチ演算子って「:=」だけど、「=」と何が違うの?
A

= は「代入するだけ」の記号ですが、:= は「代入しながら評価もする」特別な記号です。
たとえば、ifwhile の中で「変数に値を入れつつ、それを使って条件チェック」するようなときに活躍し

Q
使うときに丸括弧 ( ) が必要なのはなぜ?
A

条件式の中に := を使うとき、演算の優先順位がややこしくなってしまうことがあります。
そのため ( ) をつけることで、意図した順番で処理されるようにします。つけ忘れるとバグのもとになるので注意!

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク