global_stmt | ::= | "global" identifier ("," identifier)* |
global 文は、現在のコードブロック全体で維持される宣言文 です。global 文は、列挙した識別子をグローバル変数として 解釈するよう指定することを意味します。 global を使わずにグローバル変数に代入を行うことは 不可能ですが、自由変数を使えばその変数をグローバルであると宣言せずに グローバル変数を参照することができます。
global 文で列挙する名前は、同じコードブロック中で、 プログラムテキスト上 global 文より前に使っては なりません。
global 文で列挙する名前は、for ループの ループ制御ターゲットや、class 定義、関数定義、 import 文内で仮引数として使ってはなりません。
(現在の実装では、後ろ二つの制限については強制していませんが、 プログラムでこの緩和された仕様を乱用すべきではありません。 将来の実装では、この制限を強制したり、暗黙のうちにプログラム の意味付けを変更したりする可能性があります。)
プログラマのための注意点: global はパーザに対する指示句 (directive) です。 この指示句は、global 文と同時に読み込まれたコード に対してのみ適用されます。特に、exec 文内に入っている global 文は、exec 文を 含んでいる コードブロック内に効果を及ぼすことはなく、exec 文内に 含まれているコードは、exec 文を含むコード内での global 文に影響を受けません。同様のことが、関数 eval()、 execfile() 、および compile() にも当てはまります。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。