6
使用python的eval()与ast.literal_eval()?
我遇到了一些代码,eval()将其作为一种可能的解决方案。现在,我以前从未使用eval()过,但是,我遇到了很多有关它可能引起的潜在危险的信息。也就是说,我对使用它非常谨慎。 我的情况是我有一个用户输入: datamap = raw_input('Provide some data here: ') 哪里datamap需要一本字典。我四处搜寻,发现eval()可以解决这个问题。我认为我可以在尝试使用数据之前检查输入的类型,这将是可行的安全预防措施。 datamap = eval(raw_input('Provide some data here: ') if not isinstance(datamap, dict): return 我通读了文档,但仍不清楚这是否安全。eval是否在输入数据后或datamap调用变量后立即评估数据? 该ast模块是.literal_eval()唯一安全的选择吗?