在一篇教程中,我读到input和raw_input是有区别的。我发现它们改变了Python3.0中这些函数的行为。新的行为是什么?
为什么在python控制台解释器中这样做?
x = input()发送一个错误,但是如果我把它放在一个file.py中并运行它,它不会吗?
发布于 2010-09-27 11:12:18
在Python2.x中,raw_input()返回一个字符串,input()在调用它的执行上下文中计算输入
>>> x = input()
"hello"
>>> y = input()
x + " world"
>>> y
'hello world'在Python3.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'
>>> 所以你可能在解释器上得到了一个错误,因为你没有在你的输入两边加引号。这是必要的,因为它是经过评估的。你在哪里得到一个名称错误?
发布于 2010-12-19 20:51:09
input() vs raw_input()
raw_input收集用户键入的字符,并将其表示为字符串。input()不仅计算数字,还将任何输入视为Python代码并尝试执行它。见多识广但怀有恶意的用户可以输入Python命令,甚至可以删除文件。坚持使用raw_input(),并使用Python的内置转换函数将字符串转换为所需的数据类型。
还有input(),不是安全的用户错误!它需要一个有效的Python表达式作为输入;如果输入在语法上无效,则将引发SyntaxError。
发布于 2013-11-18 23:06:27
很简单:
raw_input()返回字符串值input()返回整数值例如:
1.
x = raw_input("Enter some value = ")
print x输出:
Enter some value = 123
'123'2.
y = input("Enter some value = ")
print y输出:
Enter some value = 123
123因此,如果我们执行x + x =,它将输出为123123
而如果我们执行y + y =,它将输出为246
https://stackoverflow.com/questions/3800846
复制相似问题