【导读】python中的eval函数类似shell中的eval命令,能对表达式进行计算。
【正文】
1. 四则运算表达式的计算
print eval("1+2*3")
2. 字符串的比较(偶然想到的)
python支持字符串的比较,比如:
print "abc" < "efg" # 结果是True
但是如何在eval也支持字符串比较的运算呢?
【试验代码1】:
print eval("abc < efg")
报错如下:
print eval("abc < efg")
File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
分析:串里的abc未定义,猜测串的内容不是常量,不能识别。下一步改为常量。
【试验代码2】:
print eval('"abc" < "efg"') # 结果是True
上述都是针对常量表达式的运算,如何支持变量呢?
a = "abc"
b = "efg"
curr_str = "\"" + a + "\"" + "<" + "\"" + b + "\""
print eval(curr_str) #结果是True
在变量a和b前后分别加上引号,在curr_str中构成常量串。否则curr_str的内容是abc<efg, 和【试验代码1】是一个错误。