我有一个初学者的问题。
>>> eval("1 + 2 * 3")
7
有道理。 但为什么会这样呢
>>> eval(input())
"1 + 2 * 3"
'1 + 2 * 3'
我确实看到手动插入的字符串与shell中函数的字符串没有区别?为什么或如何以不同的方式评估它?我在此发现的以前关于eval的问题并没有真正解决我的问题。我想了解幕后发生的事情......
答案 0 :(得分:4)
当你调用input()
时,它会将整个输入行作为字符串返回,它不像程序代码那样解析它。所以引号按字面意思包含在内。
因此,当您在输入回复中输入引号时,它等同于:
eval('"1 + 2 * 3"')
当您手动调用eval()
时需要引号,因为引号是文字字符串语法的一部分。但它们实际上并不是字符串的一部分。
答案 1 :(得分:0)
尝试使用此
<强>的eval(输入(R&#34;&#34))强>
>>> eval(input(r""))
1 + 2 * 3
O/P: 7