#
6.14 `exec` 文

  `exec_stmt` | ::= | `"exec" expression ["in" expression ["," expression]]`

  Download entire grammar as text.

この文は、Python コードの動的な実行をサポートします。 最初の式の値評価結果は文字列か、開かれたファイルオブジェクトか、 コードオブジェクトでなければなりません。文字列の場合、 一連の Python 実行文として解析し、(構文エラーが生じない限り) 実行します。開かれたファイルであれば、ファイルを EOF まで読んで解析し、実行します。コードオブジェクトなら、単に オブジェクトを実行します。

いずれの場合でも、オプションの部分が省略されると、コードは 現在のスコープ内で実行されます。`in` の後ろに一つだけ 式を指定する場合、その式は辞書でなくてはならず、 グローバル変数とローカル変数の両方に使われます。 二つの式が与えられた場合、双方ともに辞書でなくてはならず、 それぞれグローバル変数とローカル変数として使われます。

`exec` の副作用として実行されるコードで設定された変数名に 対応する名前の他に、追加のキーを辞書に追加することがあります。 例えば、現在の実装では、組み込みモジュール `__builtin__` の辞書に対する参照を、`__builtins__` (!) というキーで追加 することがあります。

プログラマのためのヒント: 式の動的な評価は、組み込み関数 `eval()` でサポートされています 組み込み関数 `globals()` および `locals()` は、 それぞれ現在のグローバル辞書とローカル辞書を返すので、 `exec` に渡して使うと便利です。