home changes contents help options

267:文字列をPythonスクリプトとして実行する

exec 文を用います。現在のスコープ内で実行されます。

>>> exec '''def hello():
...   return 'Hello World.'
... '''
>>> hello()
'Hello World.'

閉じた環境を用意する場合 in を用います。

>>> G = {}
>>> L = {}
>>> exec '''def hello():
...   return 'Hello World.'
... ''' in G, L
>>> hello()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'hello' is not defined
>>> L['hello']()
'Hello World.'

なお、文字列をスクリプトではなく「文」単体として評価するには eval 関数を用います。

>>> x = 1
>>> eval('x + 1')
2

Python 3.0 以降では exec 文は削除され、代わりに exec 関数が用意されました。こちらを用いるようにしてください。

関連