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行でまとめています:
len(my_list)の結果をnに代入する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の条件の中で、
len(x)をnに代入して、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の条件の中で、
- 正規表現で検索
- 結果を変数
mに代入 Noneじゃないかをチェック
この3つを1行で済ませているんです!
すっきりしていて、読みやすく、効率もアップしますよね。
✅ こんなときに便利!
- 検索結果があればすぐ使いたいとき
- エラーにならないように
Noneチェックを忘れたくないとき - 1行で代入+チェックをまとめたいとき

セイウチ演算子は、ちょっとした工夫で**「コードを短く、わかりやすく」**してくれる便利な存在なんです。
4. セイウチ演算子を使うときのメリット・デメリット
ここまでの例で、セイウチ演算子 := が「代入」と「条件チェック」を同時にできる、ちょっと便利な機能だということが分かってきたと思います。
でも実際のところ、「セイウチ演算子って、いつ使えばいいの?」「デメリットはないの?」と気になる方も多いはず。
そこでここでは、セイウチ演算子のメリットとデメリットを整理しておきます!
✅ メリット(使うと嬉しいポイント)
① コードが短くなる!
1行で「代入+評価」ができるので、無駄な行数を減らせてスッキリ書けます。
とくに、if や while の中で使うときに力を発揮します。
② 処理の重複を減らせる!
同じ関数を何回も呼ぶと処理が重くなることがありますが、セイウチ演算子を使えば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
=は「代入するだけ」の記号ですが、:=は「代入しながら評価もする」特別な記号です。
たとえば、ifやwhileの中で「変数に値を入れつつ、それを使って条件チェック」するようなときに活躍し
- Q使うときに丸括弧
( )が必要なのはなぜ? - A
条件式の中に
:=を使うとき、演算の優先順位がややこしくなってしまうことがあります。
そのため( )をつけることで、意図した順番で処理されるようにします。つけ忘れるとバグのもとになるので注意!







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。