首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python的eval()做了什么?

Python的eval()做了什么?
EN

Stack Overflow用户
提问于 2012-02-22 03:19:17
回答 8查看 479.6K关注 0票数 328

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

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

是干什么的呢?有人能解释一下吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-02-22 03:20:48

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

eval示例(交互式shell):

代码语言:javascript
复制
>>> x = 1
>>> eval('x + 1')
2
>>> eval('x')
1
票数 296
EN

Stack Overflow用户

发布于 2012-02-22 03:39:27

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

票数 174
EN

Stack Overflow用户

发布于 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返回的字符串强制转换为表达式并进行解释。一般来说,这被认为是不好的做法。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9383740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档