#目的
友人からPython3.8で「セイウチ演算子」なるものが導入されたと聞いたのでまとめてみる
#セイウチ演算子とは
:=
イコールの前にコロンをつけた演算子
横向きに見るとセイウチの顔っぽく見えるから…らしい
英語ではWalrus operator
Walrusはセイウチの意
#動作
__変数への代入__と__変数の使用__を同時に行える
(n := len(array)) > 4
とするとnに値(arrayの長さ)を代入しつつ4と比較することができる
代入されているのでそのあとにnを使うことも可能
主に見やすさを高めるために使う
#どんな時に使う?
##リストで使う
例えばリストの長さで条件分岐して、そのあとリストの長さを使いたいとき
array = [1,2,3,4,5,6,7]
if len(array) > 5:
print(len(array))
#7
len()を2回呼び出さなくてはいけない
まどろっこしいので一回で済ませたいときにセイウチ演算子を使う
array = [1,2,3,4,5,6,7]
if (n := len(array)) > 5:
print(n)
#7
ちょっとすっきり書けるようになる
##ファイル読み込みで使う
ファイル読み込みはかなりすっきり書くことが可能
一行ずつ読み込む場合にはwhileでreadline()を回すことが多い
さっきと同じようにreadline()が2回出てきてまどろっこしい
f = open("sample.txt")
text = f.readline()
while text:
#何らかの処理
print(text)
text = f.readline()
これを以下のようにすっきり書ける
f = open("sample.txt")
while text := f.readline():
#何らかの処理
print(text)
#注意点
代入して比較する際にはセイウチ演算子の範囲をかっこで囲む必要あり
if (n := 5) > 4:
pass
print(n)
#5
if m := 5 > 4:
pass
print(m)
#True
下の例では5>4の結果が代入されてしまった模様
値を後で使いたいならかっこで囲むべし
#まとめ
見やすさを高めるために使うもの
慣れるまでは少し時間がかかりそう
使いたいのであればPythonのバージョンを上げよう
#参考文献
リリースノート What's New In Python 3.8
https://docs.python.org/ja/3.8/whatsnew/3.8.html#new-features
Python3.8の新機能 | Yakst
https://yakst.com/ja/posts/5567