Index
代入式・セイウチ演算子とは
Python3.8から変数に値を割り当てる構文として、:=
が追加されました。これはセイウチの目と牙に見えるため、セイウチ演算子と呼ばれることがあります。
セイウチ演算子を使うことで変数の代入と変数の使用を同時に行うことができます。
(例)
# セイウチ演算子 # n に 4 を代入しながら, 3 より大きいか判定している if (n := 4) > 3: print("f{n}は3より大きい") else: print("f{n}は3以下")
使い方の例
条件式の中で変数を再利用したい場合
リストの長さのようなものを代入し、条件式の中で再度使いたい場合はセイウチ演算子を使うことで冗長性をなくすことができます。
array = [1, 2, 3] # n に array の長さを代入して, 3 と比較 if (n := len(array)) > 3: print("f{n}は3より大きい") else: print("f{n}は3以下")
上のコードをセイウチ演算子を使わずに記述すると次のようになります。len(array)
が複数現れます。
array = [1, 2, 3] if len(array) > 3: print(str(len(array)) + "は3より大きい") else: print(str(len(array)) + "は3以下")
他の例としては正規表現でマッチした部分を抽出するときにも、条件式内で変数を再利用することが多いため、セイウチ演算子が使われることがあります。
import re text = "今日は2024年3月16日です。" # 年、月、日をそれぞれキャプチャするグループ pattern = r"(?P<year>\d{4})年(?P<month>\d{1,2})月(?P<day>\d{1,2})日" # 正規表現でマッチした部分が存在する場合 if (m := re.search(pattern, text)): print(m.group()) # => 2024年3月16日 else: print("日付が見つかりませんでした。")