为了账号安全,请及时绑定邮箱和手机立即绑定

`input`和`raw_input`之间的差异

`input`和`raw_input`之间的差异

拉丁的传说 2019-08-05 15:46:44
`input`和`raw_input`之间的差异在教程中,我读到input和之间存在差异raw_input。我发现他们在Python 3.0中改变了这些函数的行为。什么是新行为?为什么在python控制台解释这个x = input()发送错误,但如果我把它放在file.py并运行它,它不会?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞


在python 2.x中,raw_input()返回一个字符串并input()在调用它的执行上下文中计算输入


>>> x = input()

"hello"

>>> y = input()

x + " world"

>>> y

'hello world'

在python 3.x中,input已被废弃并且之前已知的功能raw_input是现在input。所以你必须手动调用,compile而不是eval你想要旧的功能。


python2.x                    python3.x


raw_input()   --------------> input()               

input()  -------------------> eval(input())     

在3.x中,上面的会话是这样的


>>> x = eval(input())

'hello'

>>> y = eval(input())

x + ' world'

>>> y

'hello world'

>>> 

所以你可能在解释器上遇到错误,因为你没有在你的输入中加上引号。这是必要的,因为它已被评估。你得到名称错误的地方?


查看完整回答
反对 回复 2019-08-05
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

input()vs raw_input()

raw_input收集用户键入的字符并将其显示为字符串。input()不只是评估数字,而是将任何输入视为Python代码并尝试执行它。知识渊博但恶意的用户可以键入甚至可以删除文件的Python命令。坚持使用raw_input()并使用Python的内置转换函数将字符串转换为您需要的数据类型。

输入(),也不是安全的用户错误!它期望一个有效的Python表达式作为输入; 如果输入语法无效,则会引发SyntaxError。


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 366 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信