在我正在阅读的Python书籍中,它一直使用代码eval(input('blah'))

我阅读了文档,我理解了它,但我仍然不明白它是如何改变input()函数的。

它能做什么?有人能解释一下吗?


当前回答

eval函数允许Python程序在自身内部运行Python代码。

Eval示例(交互式shell):

>>> x = 1
>>> eval('x + 1')
2
>>> eval('x')
1

其他回答

eval()将传递的字符串计算为Python表达式并返回结果。例如,eval("1 + 1")解释并执行表达式"1 + 1",并返回结果(2)。

您可能感到困惑的一个原因是,您引用的代码涉及到一定程度的间接。内部函数调用(input)首先执行,因此用户会看到“blah”提示。让我们想象一下,它们以“1 + 1”(为了清晰起见,添加引号,在运行程序时不要键入它们)响应,输入函数返回该字符串,然后将其传递给外部函数(eval),后者解释字符串并返回结果(2)。

在这里阅读更多关于eval的内容。

Eval(),顾名思义,对传递的参数求值。

Raw_input()现在是python 3中的input()。x版本。因此,使用eval()最常见的例子是使用它来提供input()在2中提供的功能。python的X版本。 Raw_input将用户输入的数据作为字符串返回,而input则计算输入的数据的值并返回它。

Eval (input("bla bla"))因此复制了2中的input()的功能。X,即计算用户输入的数据。

简而言之:eval()计算传递给它的参数,因此eval('1 + 1')返回2。

在Python 2中。在Python 3中,x input(…)等价于eval(raw_input(…))。x raw_input被重命名为input,我怀疑这导致了您的困惑(您可能正在查看Python 2.x中的输入文档)。此外,eval(input(…))在Python 3中可以很好地工作。x,但在Python 2中会引发TypeError。

在这种情况下,eval用于将输入返回的字符串强制转换为表达式并进行解释。通常这被认为是不好的做法。

也许是一个阅读一行文字并解释它的误导性例子。

尝试eval(input())并输入“1+1”-这应该打印2。Eval求表达式的值。

如果用户输入一个数值,input()将返回一个字符串。

>>> input('Enter a number: ')
Enter a number: 3
>>> '3'
>>> input('Enter a number: ')
Enter a number: 1+1
'1+1'

Eval()将计算返回值(或表达式),它是一个字符串,并返回整数/浮点数。

>>> eval(input('Enter a number: '))
Enter a number: 1+1
2
>>> 
>>> eval(input('Enter a number: '))
Enter a number: 3.14
3.14

但是,最好在这里使用更具体的工具,如int()或float()。

>>> float(input('Enter a number: '))
Enter a number: 3.14
3.14