初次接触eval函数,我的理解是它可以去掉引号,把字符串当作程序可以识别的代码执行。也就是去掉字符串的两个引号,将其解释为一个变量。
例1
>>> x = 7
>>> print(eval( '3 * x' ))
21
例2
>>> namespace = {'a': 2, 'b': 3}
>>> result = eval("a + b", namespace)
>>> print(result)
5
input()输出类型都是str,如果要参与运算,需要转换格式。
>>> a = input("请输入一个数字:")
请输入一个数字:2
>>> type(a)
<class 'str'>
>>> result = int(a) + 1
>>> print(result)
3
但是,eval与input同时使用eval(input("请输入: "))则是去掉引号和里面的字符,只将输入的内容转换为int数值类型,再执行下一步程序。
>>> a = eval(input("请输入一个数字:"))
请输入一个数字:2
>>> type(a)
<class 'int'>
>>> print(a+1)
3