缘起
小例子
def test_1(val): print "val", val, type(val) def test_2(val): print "val", val, type(2) if __name__ == "__main__": for i in [1, 2]: eval("test_" + str(i))(i)
执行结果
val 1 <type 'int'> val 2 <type 'int'>
分析:利用eval函数,把字符串“test”和“1”组合成函数名test_1(test_2同样),挺神奇的,第一次见到这么用。
eval函数
eval()将字符串str当成有效的表达式来求值并返回计算结果
例子1
>>> x = 1 >>> y = 2 >>> print eval("x+y") 3
例2
>>> a = "{'a':1, 'b':[1, 2, 3]}" "{'a':1, 'b':[1, 2, 3]}" >>> eval(a) {'a': 1, 'b': [1, 2, 3]} >>> print type(eval(a)) <type 'dict'>
危险性
备份下:http://blog.donews.com/soarnil/archive/2007/02/28/1134203.aspx