python中的eval()函数十分强大——将字符串当成有效的表达式来求值并返回计算结果
# 基本的数学计算
print(eval("2 + 3"))
print("\n")
# 字符串重复
print(eval("'*' * 5"))
print("\n")
# 将字符串转换成列表
print(type(eval("[1, 2, 3]")))
print("\n")
# 将字符串转换成字典
print(type(eval("{'name': '张三', 'age': 18}")))
输出结果如下:
5
*****
<class 'list'>
<class 'dict'>
案例一:提示用户输入一个加减乘除混合运算式
input_str = input("请输入一个算术题:")
print(eval(input_str))
请输入一个算术题:2*4
8
案例二:eval()函数另一个很重要的作用是可以将输入的数字是字符串的形式转换为数字类型,示例如下:
input_str0 = input("请输入一个数:")
print(input_str0 * 3)
print("\n")
input_str1 = eval(input("请输入一个数:"))
print(input_str1 * 3)
结果如下:
请输入一个数:3
333
请输入一个数:3
9
出现这种情况的原因就是第一个输入的3是字符串类型,而不是第二个3一样的数字类型
但eval()也不能滥用:
在开发的时候不要直接用eval()直接输出input()的结果:
__import__('os').system('ls')
上面这一行代码等价于:
import os
os.system("终端命令")
表示执行结束,执行成功返回0,执行失败会返回错误信息