

python初心者です。  
勉強している中でpythonでは1行で複数変数に対して同時に値代入ができることを学びました。

しかし、疑問なのは1行で複数の代入を行う場合、処理順番はどうなるのでしょうか？  
例えば以下のような状況です。

[code]

    a = 1
    b = 2
    
    b, c = a, b + 1
    
[/code]

既に実行してみた結果として以下の結果となることは確認済みです。

[code]

    a = 1
    b = 1
    c = 3
    
[/code]

私は上記のコードは以下のコードと同義だとばかり思っていました。

[code]

    a = 1
    b = 2
    b = a
    c = b + 1
    
[/code]

もしもこれと同じであったなら、c = 2となるはずですが実際は異なります。  
つまり、1行で複数の値の代入を行う場合、その行を評価する段階で右辺に来る値は固定されており、  
同時に行う処理結果には左辺は左右されないということになると考えています。

[code]

    a = 1
    b = 2
    {
      b' = b
      b = b'
      c = b' + 1
    }
    
[/code]

と言った形になるのが自然なのかなと。  
こういった認識で合っているのでしょうか？


CC BY-SA 4.0
2023-06-29T13:45:18.730
95419
2023-06-29T14:14:16.537
58914
question
python python3
python 一行で複数の変数に値を代入する場合の処理順


[タプルとシーケンス](https://docs.python.org/ja/3/tutorial/datastructures.html#tuples-
and-sequences) より

> 複数同時の代入が実はタプルのパックとシーケンスのアンパックを組み合わせたものに過ぎないことに注意してください。

ということで以下のことが行われています

  * 右辺はタプルのパック (tuple packing)
  * 左辺はシーケンスのアンパック (sequence unpacking)

[code]

    # b, c = a, b + 1 を分解すると
    
    t = a, b + 1
    b, c = t
    
[/code]


CC BY-SA 4.0
2023-06-29T14:14:16.537
95420
2023-06-29T14:14:16.537
43025
95419
answer