Python3 exec 関数

Python3 内置函数Python3 組み込み関数


説明

exec文字列またはファイルに格納された Python 文を実行します。比較すると、eval,execより複雑な Python コードを実行できます。

構文

以下は exec の構文です:

exec(object[, globals[, locals]])

パラメータ

  • object:必須パラメータで、指定する必要がある Python コードを示します。これは文字列または code オブジェクトでなければなりません。object が文字列の場合、その文字列はまず一連の Python 文として解析されてから実行されます(構文エラーが発生しない限り)。object が code オブジェクトである場合は、単に実行されるだけです。
  • globals:オプションパラメータで、グローバル名前空間(グローバル変数を格納)を表します。提供される場合は、辞書オブジェクトでなければなりません。
  • locals:オプションパラメータで、現在のローカル名前空間(ローカル変数を格納)を表します。提供される場合は、任意のマッピングオブジェクトにすることができます。このパラメータが省略された場合、globals と同じ値になります。

戻り値

exec の戻り値は常に None です。


例

以下に exec を使用する例を示します:

例1

>>>exec('print("Hello World")') Hello World # 単一行ステートメント文字列 >>> exec("print ('example.com')") サンプル.com # 複数行ステートメント文字列 >>> exec ("""for i in range(5): ... print ("iter time: %d" % i) ... """) iter time: 0 iter time: 1 iter time: 2 iter time: 3 iter time: 4

例2

x = 10 expr = """ z = 30 sum = x + y + z print(sum) """ def func(): y = 20 exec(expr) exec(expr, {'x': 1, 'y': 2}) exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4}) func()

出力結果:

60
33
34

exec の戻り値

Python では、exec関数は文字列内のコードを実行するために使用されますが、戻り値を返しません。実行したコードの戻り値を取得したい場合は、使用できます。eval関数またはexec組み合わせてlocals() 或 globals()変数の値を取得します。

注意してください。使用するevalとexecには注意が必要です。特に、実行されるコードが信頼できないソースからのものである場合、セキュリティ上のリスクが存在する可能性があります。

使用してeval戻り値を取得:

例

code = '2 + 2'
result = eval(code)
print(result)

この例では、eval文字列を実行し'2 + 2'結果を返します。4。

上記のコードを実行した出力結果は次のとおりです:

4

を使用しexecと組み合わせてlocals()戻り値を取得:

例

code = 'result = 2 + 2'
local_vars = {}
exec(code, globals(), local_vars)
result = local_vars['result']
print(result)

この例では、exec文字列を実行し'result = 2 + 2'、結果をlocal_vars辞書の'result'キーに格納します。

上記のコードを実行した出力結果は次のとおりです:

4

を使用しexecと組み合わせてglobals()戻り値を取得:

例

code = 'result = 2 + 2'
global_vars = {}
exec(code, global_vars)
result = global_vars['result']
print(result)

この例では、exec文字列を実行し'result = 2 + 2'、結果をglobal_vars辞書の'result'キーに格納します。

上記のコードを実行した出力結果は次のとおりです:

4

Python3 内置函数Python3 組み込み関数

その他の拡張