Python Language`exec`と` eval`を使った動的コード実行


構文

  • eval(式[、globals = None [、locals = None]])
  • exec(オブジェクト)
  • exec(オブジェクト、グローバル)
  • exec(オブジェクト、グローバル、ローカル)

パラメーター

引数詳細
expression 文字列としての式コード、またはcodeオブジェクト
object 文字列としてのステートメントコード、またはcodeオブジェクト
globals グローバル変数に使用する辞書。 localsが指定されていない場合、これは地元の人々にも使用されます。省略すると、呼び出しスコープのglobals()が使用されます。
locals ローカル変数に使用されるマッピングオブジェクト。省略すると、代わりにglobals渡されたものが使用されます。両方を省略すると、呼び出しスコープのglobals()およびlocals()がそれぞれglobalsおよびlocals使用されglobals

備考

execでは、 globalslocals (つまり、同じオブジェクトを参照する)場合、コードはモジュールレベルにあるかのように実行されます。 globalslocalsが異なるオブジェクトである場合、コードはクラス本体内にあるかのように実行されます。

globalsオブジェクトが渡されても__builtins__キーが指定されていない場合、Pythonの組み込み関数と名前は自動的にグローバルスコープに追加されます。実行されたスコープ内でのprintisinstanceなどの機能の使用を抑止するには、 globals __builtins__というキーを値Noneマップさせます。ただし、これはセキュリティ機能ではありません。

Python 2固有の構文は使用しないでください。 Python 3の構文はPython 2で動作します。したがって、以下の形式は推奨されません:<s>

  • exec object
  • exec object in globals
  • exec object in globals, locals

`exec`と` eval`を使った動的コード実行 関連する例