说明:
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
可以将int、list、dict、tuple与str之间的转化。
可以看成str函数的逆运算。
int_1 = 1 list_1 = [1, 2, 4] tuple_1 = tuple(list_1) dict_1 = dict(a=1, b=2) int_2 = eval(str(int_1)) list_2 = eval(str(list_1)) tuple_2 = eval(str(tuple_1)) dict_2 = eval(str(dict_1)) print('type(str(dict_1))', type(str(dict_1))) print('int_2', type(int_2)) print('list_2', type(list_2)) print('tuple_2', type(tuple_2)) print('dict_2', type(dict_2))
慎用:
对于有经验的侵入者来说,他可能会有一系列强大的手段,使得 eval 可以解释和调用这些方法,从而带来更大的破坏。
此外, eval() 函数也给程序的调试带来一定困难,要查看eval() 里面表达式具体的执行过程很难。
因此在实际应用过程中如果使用对象不是信任源,应该避免使用 eval,在需要使用 eval 的地方可用安全性更好的 ast.literal_eval 替代。