6.3 代入文 (assignment statement)

代入文 は、名前を値に (再) 束縛したり、 変更可能なオブジェクトの属性や要素を変更したりするために使われます:

Download entire grammar as text.

(末尾の三つのシンボルの構文については 5.3 節を 参照してください。)

代入文は式のリスト (これは単一の式でも、 カンマで区切られた式リストでもよく、後者はタプルになることを 思い出してください) を評価し、得られた単一の結果オブジェクトを ターゲット (target) のリストに対して左から右へと代入してゆきます。

代入はターゲット (リスト) の形式に従って再帰的に行われます。 ターゲットが変更可能なオブジェクト (属性参照、添字表記、またはスライス) の一部である場合、この変更可能なオブジェクトは最終的に代入を 実行して、その代入が有効な操作であるか判断しなければなりません。 代入が不可能な場合には例外を発行することもできます。型ごとに みられる規則や、送出される例外は、そのオブジェクト型定義 で与えられています ( 3.2 節を参照してください).

ターゲットリストへのオブジェクトの代入は、以下のようにして再帰的に 定義されています。

単一のターゲットへの単一のオブジェクトの代入は、以下のようにして 再帰的に定義されています。

(現在の実装では、ターゲットの構文は式の構文と同じであるとみなされて おり、無効な構文はコード生成フェーズ中に詳細なエラーメッセージを 伴って拒否されます。)

警告: 代入の定義では、左辺値と右辺値がオーバラップするような代入 (例えば、"a, b = b, a" を行うと、二つの変数を入れ替えます) を 定義しても `安全 (safe)' に代入できますが、代入対象となる 変数群 の間で オーバラップがある場合は安全ではありません! 例えば、以下のプログラムは "[0, 2]" を出力してしまいます:

x = [0, 1]
i = 0
i, x[i] = 1, 2
print x



ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。