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

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

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


当前回答

eval()的一个有用的应用是计算python表达式的字符串值。例如load from file string dictionary:

running_params = {"Greeting":"Hello "}
fout = open("params.dat",'w')
fout.write(repr(running_params))
fout.close()

将其作为变量读取并编辑:

fin = open("params.dat",'r')
diction=eval(fin.read())
diction["Greeting"]+="world"
fin.close()
print diction

输出:

{'Greeting': 'Hello world'}

其他回答

如果用户输入一个数值,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

注意eval()和exec()的区别:

>>> exec("x=2")
>>> x
2
>>> eval("x=1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    x=1
     ^

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

Eval示例(交互式shell):

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

Eval()将字符串解释为代码。这么多人警告您不要使用它的原因是因为用户可以使用它作为在计算机上运行代码的选项。如果你导入了eval(input())和os,人们可以在input() os中输入。system('rm -R *')将删除主目录下的所有文件。(假设您有unix系统)。使用eval()是一个安全漏洞。如果需要将字符串转换为其他格式,请尝试使用类似int()的方法。

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。