在教程中,我读到input
和raw_input
之间存在差异。我发现他们在Python 3.0中改变了这些函数的行为。什么是新行为?
为什么在python控制台解释这个
x = input()
发送错误,但如果我把它放在file.py中并运行它,它不会?
答案 0 :(得分:16)
在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'
>>>
所以你可能在解释器上遇到错误,因为你没有在你的输入中加上引号。这是必要的,因为它已被评估。你得到名称错误的地方?
答案 1 :(得分:3)
input()vs raw_input()
raw_input收集用户键入的字符并将其显示为字符串。 input()不只是评估数字,而是将任何输入视为Python代码并尝试执行它。知识渊博但恶意的用户可以键入甚至可以删除文件的Python命令。坚持使用raw_input()并使用Python的内置转换函数将字符串转换为您需要的数据类型。
同样输入(),对用户错误不安全!它期望一个有效的Python表达式作为输入;如果输入语法无效,则会引发SyntaxError。
答案 2 :(得分:3)
简单:
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