在我正在阅读的Python书籍中,它一直使用代码eval(input('blah'))
我阅读了文档,我理解了它,但我仍然不明白它是如何改变input()函数的。
它能做什么?有人能解释一下吗?
在我正在阅读的Python书籍中,它一直使用代码eval(input('blah'))
我阅读了文档,我理解了它,但我仍然不明白它是如何改变input()函数的。
它能做什么?有人能解释一下吗?
当前回答
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()的一个有用的应用是计算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'}
也许是一个阅读一行文字并解释它的误导性例子。
尝试eval(input())并输入“1+1”-这应该打印2。Eval求表达式的值。
eval函数允许Python程序在自身内部运行Python代码。
Eval示例(交互式shell):
>>> x = 1
>>> eval('x + 1')
2
>>> eval('x')
1
eval()函数接受三个参数,求值并返回值。 语法:eval(表达式,全局变量,局部变量) python3表达式的字符串 Globals(可选)#字典 Locals(可选)#字典 #你经常使用的常见用例是 x = "{“名称”:“abhi”,“mydict”:{“子”:python的}}” y=dict(x)print(y,type(y)) # ValueError:字典更新序列元素#0的长度为1;需要2 z = eval (x)打印(z,类型(z)) #{“名称”:“abhi”,“mydict”:{“子”:python的}}<类的dict >