Python3.8で追加された代入式の書き方と使い方
みなさまおはこんばんにちは、せなです
今回はPython3.8から新しく追加された代入式の使い方について解説したいと思います
代入式の書き方
基本的なif文は以下のようなコードです
num = 5
if num > 1:
print(num)
else:
print('num < 1')
return
----結果----
5
上記を代入式にしてコードを書くと以下のようになります
if (num := 5) > 1:
print(num)
else:
print('num < 1')
----結果----
5
whileを使ったファイルの読み込み処理で代入式を利用
一般的なファイルの読み込み
with open(path) as f:
while True:
s = f.read(5000)
if not s:
break
print(len(s))
代入式を使用したファイルの読み込み
with open(path) as f:
while s := f.read(5000):
print(len(s))
一般的な書き方よりも短いコードで記述できます
リスト内包表記で2回関数を実行する時の代入式の利用
リスト内包表記を使用しない場合
old_list = [1,2,3,4]
new_list = []
for x in old_list:
y = cal(x)
if y > 0:
new_list.append(y)
print(new_list)
def cal(x):
x = x * x
return x
----結果----
[1, 4, 9, 16]
関数の呼び出しは1回で行えるが冗長な部分が多いです
リスト内包表記を使用した場合
old_list = [1,2,3,4]
new_list = [cal(x) for x in old_list if cal(x) > 0]
print(new_list)
def cal(x):
x = x * x
return x
----結果----
[1, 4, 9, 16]
リスト内包表記を使用しない場合と比べて短いコードで記述できます
リスト内包表記に代入式を使用した場合
old_list = [1,2,3,4]
new_list = [y for x in old_list if (y:=cal(x)) > 0]
print(new_list)
def cal(x):
x = x * x
return x
----結果----
[1, 4, 9, 16]
一度の関数呼び出しで処理を行うことができます
代入式で気おつけること
下記のような式があるプログラムを見るときには代入がされていることを踏まえてトレースを行う必要が出てきました
[y for x in old_list if (y:=cal(x)) > 0] #後ろのy:=cal(x)で代入が行われている
Python3.7までは問題ないですが、環境がPython3.8以降の時には気おつけるようにしましょう
ディスカッション
コメント一覧
まだ、コメントがありません