内置函数 eval
eval 执行字符串表示的代码,并把结果返回
1 i1 = eval('12+22') 两个数值相加 2 print(i1, type(i1)) 34 <class 'int'> 3 n = 2 4 i2 = eval('n+3') 变量的值和数值相加 5 print(i2, type(i2)) 5 <class 'int'> 6 eval('print(123)') 123 打印语句 7 s1 = eval("'a'+'b'") 两个字符串相加 8 print(s1, type(s1)) ab <class 'str'>
下面是使用报错的例子
1 s1 = eval('abc') 2 print(s1)
看下报错的原因:
eval, 把 'abc' 解读成 一个变量,
而程序中却没有这个变量, 所以报错.
因此,可以发现, 为什么 eval 可以执行 字符串'n + 2' 的代码
正确例子如下:
1 abc = {'a': 1} 2 s1 = eval('abc') 3 print(s1, type(s1)) {'a': 1} <class 'dict'>
可以把 abc 这个变量, 换成可以赋值的任何元素, 甚或是函数名
1 def foo(): 2 print('123') 3 4 5 abc = foo 6 s1 = eval('abc') 7 print(s1, type(s1)) 8 9 s1()
执行结果如下:
1 <function foo at 0x10dd16ea0> <class 'function'> 2 123