在我正在读的关于Python的书中,它一直使用代码eval(input('blah'))
我阅读了文档,并且我理解它,但是我仍然不明白它如何改变input()
函数。
是干什么的呢?有人能解释一下吗?
发布于 2012-02-22 03:20:48
eval函数允许Python程序在其内部运行Python代码。
eval示例(交互式shell):
>>> x = 1
>>> eval('x + 1')
2
>>> eval('x')
1
发布于 2012-02-22 03:39:27
eval()
将字符串解释为代码。这么多人警告您不要使用它的原因是,用户可以使用它作为在计算机上运行代码的选项。如果你导入了eval(input())
和os
,一个人可以在input()
os.system('rm -R *')
中输入,这会删除你主目录中的所有文件。(假设您有一个unix系统)。使用eval()
是一个安全漏洞。如果您需要将字符串转换为其他格式,请尝试使用类似int()
这样的工具。
发布于 2012-02-22 03:21:28
在Python2.x中,input(...)
等同于eval(raw_input(...))
,在Python3.x中,raw_input
被重命名为input
,我怀疑这会导致您的混淆(您可能正在查看Python2.x中的input
文档)。此外,eval(input(...))
在Python3.x中可以很好地工作,但在Python2中会引发TypeError
。
在本例中,eval
用于将从input
返回的字符串强制转换为表达式并进行解释。一般来说,这被认为是不好的做法。
https://stackoverflow.com/questions/9383740
复制相似问题