Pythonのeval(), exec()を使って、文字列をスクリプトとして実行する方法について説明します。
evalの使用例
eval()の引数に実行したい「式」を文字列として渡すと、その実行結果が戻り値として返されます。
1 2 3 |
x = 7 y = eval('x ** 2') print y # 49 |
eval()が受け付けるのは「式」のみなので、次のように「文」を含んだ文字列は実行できません。
1 2 3 |
eval('z = 8') # Error eval('if z == 8: print z') # Error eval('def f(x): print x') # Error |
exec()の使用例
exec()は Python 2.x では「文」、3.x では「関数」となっています。ここでは Python 2.xでの使い方を解説します。
1 2 |
exec('x = 7') print x # 7 |
前述の eval()で実行できるのは式だけでしたが、exec()は文を実行することができます。上の例では代入文を実行して、変数xを宣言しています。
また文字列を渡すだけではなく、ファイルオブジェクトを渡すことも可能です。例えば、以下のようなブログラム(hello.py)があったとします。
1 |
print "Hello World!" |
このファイルを読み込んで実行することができます。
1 2 |
file = open('hello.py') exec(file) # Hello World! |
スクリプトの中で他のスクリプトを呼び出す場合などに利用できます。