Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonのセイウチ演算子「:=」と代入式について

【Python入門】演算子「:=」(セイウチ演算子)と代入式の使い方の初歩的解説

【Python入門】演算子「:=」(セイウチ演算子)の使い方の初歩的解説

今回はPythonの通称セイウチ演算子こと、代入式(文ではなく式です)を実現する演算子「:=」の基本的な考え方、使い方の解説です。

Pythonにおける演算子「:=」の機能とは?

まずは代入文の基本

上でも書きましたが、Python3.8以降ではセイウチ演算子(セイウチの顔に似ているから)と言われる演算子「:=」を使い、「代入式」という機能を実現できるようになりました。

代入式とは単なる代入文とは異なり、式の一種です。Pythonの式というものは、それがプログラムによって評価された結果なんらかの値を返すもの(例:True/False)です。例えば、次のコードを見てください。

name = "Tom"

if name:
    print(name)

ここで

name = "Tom"

これは単なる代入「文」です。代入文を実行しても、つまり何か値を代入しても、代入文自体になんらかの値を返す仕組みはありません。よってこの代入文を実行しても、代入されるだけでなにか値が返ってくるわけではありません。

しかし次の行の、

if name:

この「name」の部分は、if文の条件を表す部分です。if文は、

if 条件:
    処理

この条件が「真」だった場合に定められた処理を行うという文であり、それゆえ上のコード例ではプログラムによって変数「name」のデータが評価され、その変数データが存在していればTrueが返ってくる仕組みになっています。条件について真偽の結果が出ないとif文が動きません。

代入式の基本的な考え方

この代入文に対して、代入式とは、

  • 代入
  • 式が評価された結果としてなんらかの値を返す

という2つの機能を同時に実装する式です。代入式も「式」の一種ですので、代入式を実行するとなんらかの値が返ってきます。

以下、コード例を見てみましょう。

コード例

代入式を使わない場合

まず代入式を使わないif文を書いてみます。

name = "Tom"

if name:
    print(name)

実行すると、

Tom

です。

まず変数nameに代入して、それからif文を書いていくという流れになっています。

なおif文においては、

if name = "Tom":  # 代入「文」を使うとエラー
    print(name)

このように条件の部分に代入文を書くことはできません。このようにPythonでは代入文をそのまま使えない文も存在しています。

ですが、「いちいちif文の外側で、変数になにかを代入してからif文へ移る」というのもどこか面倒といえば面倒に見えるというのもあると思います。

「代入文」を使えないのならば、「代入文」以外ならいいわけで、そこで「代入式」の登場です。

では次に上記コードを代入式を使って書き変えてみます。

代入式を使う場合

if name := "Tom":
    print(name)

コードが少し短くなり、シンプルになりました。

これを実行しても、

Tom

と同じ結果になります。

変数nameへの「代入」と、if文の条件において「真偽判定の結果、真が返っている」という2つの処理が同時になされていることを意識してください。

演算子「:=」を使う代入式のメリットとデメリット

このようにセイウチ演算子こと「:=」演算子を使って代入式を使うと、本来直接代入文を書くことができないところで、代入という処理を含ませることができ、それがコードの見た目のシンプルさにつながります。

しかし一方で、代入式に不慣れな初心者にはわかりにくいコードになってしまうというデメリットもあります。Python3.8以降で使えるようになった機能なので、それより前のバージョンでは使えないので昔のコードのメンテナンスには気を使う必要も出てきます。

公式ドキュメントでも代入式を使う場合は、

セイウチ演算子の使用は、複雑さを減らしたり可読性を向上させる綺麗なケースに限るよう努めてください。(Python公式ドキュメント、「代入式

との記載がなされています。

世界最大の動画学習サイトUdemyで、プログラミングを最速でマスターしましょう。

Udemy
愛を分かち合いましょう