eval 函数
将字符串str当成有效的表达式来求值并返回计算结果

# 将字符串进行求值计算
a = "1 + 1"
print a
print eval(a)

# 执行结果
1 + 1
2
# 将字符串直接执行(对应了相应函数名)
combo = lambda (x, y, z): [(i, j, k) for i in range(x) for j in range(y) for k in range(z)]
print eval("combo")((2, 2, 2))

# 执行结果
[(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)]
# 解析JSON字符串
import json
b = '{"a": "b", "c": "d"}'
print json.loads(b)
print eval(b)

#执行结果
{u'a': u'b', u'c': u'd'}
{'a': 'b', 'c': 'd'}
eval很强大,但同时也暴露出相应的危险,如果把一些系统命令字符串进行执行,那么 

aa = "__import__('os').system('dir')"
eval(aa)
执行结果如下(是不是很可怕):

D:\AutomationTest\Exercise 的目录

2017/02/06 周一 16:26 <DIR> .
2017/02/06 周一 16:26 <DIR> ..
2017/02/06 周一 16:27 <DIR> .idea
2017/02/06 周一 16:26 1,991 list.py
1 个文件 1,991 字节
3 个目录 118,616,854,528 可用字节