Python 3:=ゾウ演算子

3828 ワード

python 3.8の正式版が更新されると、海象演算子は正式なpythonバージョンのサポートを受けます.公式サイトの紹介:There is new syntax := that assigns values to variables as part of a larger expression.It is affectionately known as “the walrus operator” due to its resemblance to the eyes and tusks of a walrus. 翻訳:これは新しい文法で、強力な式で、付与文は式の一部として扱われます.このオペレータは海象の目や象牙に似ているので、私たちは親切に「海象オペレータ」と呼んでいます.公式サイトにはいくつかの例があります.
if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

この例では、海象式を用いることでlen()メソッドを2回実行することを回避し、実行速度を向上させることを強調する.もし海象演算子がない場合、私たちはどのようにこのコードを書きますか?試してみましょう
if len(a) > 10:
    print(f"List is to long({len(a)} elements, expected <= 10)")

あるいは、lenメソッドを2回使用することを避け、中間変数に値を割り当てるステップを1回以上加えた.
n = len(a)
if n > 10:
    print(f"List is to long({n} elements, expected <= 10)")

もう1つの例を見ると、whileサイクル制御は、値を割り当てるステップを省くことができます.
# Loop over fixed length blocks
while (block := f.read(256)) != '':
    process(block)

このコードは、空で操作を実行しない場合、海象演算子がない場合、どのように書きますか.
while 1:
    block = f.read(256)
    if block != '':
        process(block)

同様に付与が一気に行われるので、海象演算子の役割は、変数付与を他の文(例えば判断文)とマージし、変数をコードブロックで運用できることにあると思います.したがって,海象演算子はプロセスを簡素化し,演算速度を向上させることができる.