■ はじめに
文字列をスクリプトとして実行する eval, exec について扱う どちらも組み込み関数に分類されるメソッド。
https://docs.python.org/ja/3.6/library/functions.html
個人的な感想
コードが追いづらくなるから、 無暗には使わないでほしい、、、
目次
【1】 eval 【2】 exec 【3】globals() / locals()
【1】 eval
https://docs.python.org/ja/3.6/library/functions.html#eval
eval(expression, globals=None, locals=None) 第1引数 expression : 式として評価 第2引数 globals : グローバルな名前空間を指定 第3引数 locals : ローカルな名前空間を指定
サンプル
例1:Hello world!
print(eval('1 + 2')) # 3
例2:関数を文字列から呼び出す
def say_hello(name): return "Hello, {}!!".format(name) name = 'Mike' print(eval("say_hello")(name)) # Hello, Mike!!
【2】 exec
https://docs.python.org/ja/3.6/library/functions.html#exec
exec(object[, globals[, locals]]) 第1引数 expression : 文として実行 第2引数 globals : グローバルな名前空間を指定 第3引数 locals : ローカルな名前空間を指定
サンプル
hello = """ hello = 'Hello World!' print(hello) """ exec(hello) # Hello World!
【3】globals() / locals()
* 以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2022/07/11/161815
参考文献
https://qiita.com/Kodaira_/items/30c84806b61792b613f2
https://qiita.com/kyoshidajp/items/57ae371b3f5d8a84fb13
eval で 関数を文字列から動的に呼び出す
https://qiita.com/Chanmoro/items/9b0105e4c18bb76ed4e9
関連記事
Python ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2019/10/12/075251
Python ~ globals() / locals() ~
https://dk521123.hatenablog.com/entry/2022/07/11/161815