Python

【Python】セイウチ演算子の使い方【代入式】

この記事では、Pythonのセイウチ演算子(英語名: Walrus operator)の使い方を解説します。セイウチ演算子とは、Python3.8で追加された変数の代入と使用を同時に行える演算子のことです。つまりは、代入式のことです。

それでは、セイウチ演算子の使い方を見ていきましょう!

セイウチ演算子の使い方

書式

セイウチ演算子は以下のように記述します。

:=

なぜセイウチ演算子と呼ばれるかと言うと、見た目がセイウチに似てるかららしい。なんとな〜くセイウチの顔に見えなくも無い…ような。

名前付き式(Named Expressions)と呼ばれることもあります。

使ってみる

例えば以下のようなコードをセイウチ演算子を使って書き直すと、

val = 1
if val >= 0:
    print(val)

少しだけすっきりと記述することができます。

if (val := 1) >= 0:
    print(val)

セイウチ演算子の注意点

セイウチ演算子にはいくつか注意点があります。

優先順位

先ほどのコードではval := 1()で囲っていました。これを外すとどうなるか見てみましょう!

if val := 1 >= 0:
    print(val)
    # True

valにTrueが代入されました。ということは、1 >= 0の結果がvalに代入されているのが分かります。()を付け忘れないように気を付けましょう!

ブロックスコープではない

先ほどのコードのvalはif文ブロック外からでも呼び出せます。

if (val := 1) >= 0:
    print(val)

print(val)

見た目上は、if文ブロック内でしか呼び出せなさそうですが、スコープを狭く作れる訳では無いので注意してください。

=と同じようには使えない

代入文の代わりに使うことはできません。

val := 1
# SyntaxError: invalid syntax

()で囲むことで使えなくはないですが、

(val := 1)

デメリットしかないので使わないようにしましょう!

まとめ

この記事では、Pythonのセイウチ演算子(代入式)について解説しました。セイウチ演算子を使うことで少しだけコードをすっきりさせることができます。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

参考PEP 572 — Assignment Expressions | Python.org

【おすすめ】Python参考書