LoginSignup
90
63

More than 3 years have passed since last update.

セイウチ演算子って何?

Last updated at Posted at 2019-10-17

目的

友人から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

90
63
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
90
63