eval()为python的内置函数,它将字符串转化为有效的表达式计算,并返回计算结果。简单理解为将你输入的字符串当成python表达式执行。
- eval()函数实例
1、概念比较简单,看下面的例子:
from functools import reduce value1 = eval("1+1+2+3+5+8+13+21") print(value1) a = [1, 2, 3] eval("a.append(4)") print(a) print(type(eval("{'A':'a', 'B':'b', 'C':'c'}"))) b = [1, 2, 3, 4, 5, 6] print(eval("reduce(lambda x, y: x*y, b)")) # 阶乘
结果:
54
[1, 2, 3, 4]
<class 'dict'>
720
2、另一个可供参考的例子是可以利用eval()函数实现一个简答的计算器,他不用使用户挨个输入计算的数字,如下:
input_data = input("请输入数学表达式!") value2 = eval(input_data) print(value2)
运行程序用户输入:
请输入数学表达式!1+3+5+7+9
结果:
25
- 慎用eval()函数
eval()函数虽然在很多情况下能够带来便利,但是要慎用,因为它能够将字符串转化为表达式执行,外部可以利用这个特性执行系统命令,删除、建立文件等操作,造成安全隐患。
如上述例子2,假设用户输入的不是数学表达式,而是其他指令,可能会造成安全隐患。
"__import__('os').system(ls /User/)"