eval()

说明:

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 替代。

原文地址:https://www.cnblogs.com/qianslup/p/12157529.html