[Python] evalとast.literal_evalの違い

評価

文字列式を実行し、式の値を返すために使用されます。

input_ = eval(input('Provide some data here: '))
# 如果输入下面的字符串且被执行,非常危险
__import__('os').system('rm -rf /a-path-you-really-care-about')

ast.literal_eval

Python リテラルまたはコンテナ表示を含む式ノードまたは文字列を安全に評価します。指定された文字列またはノードは、次の Python リテラル構造でのみ構成できます: string、bytes、number、tuple、list、dict、set、boolean、None、bytes、set。

参照:

おすすめ

転載: blog.csdn.net/lan_yangbi/article/details/129163575