`input`和`raw_input`之间的区别

时间:2010-09-27 03:07:33

标签: python

在教程中,我读到inputraw_input之间存在差异。我发现他们在Python 3.0中改变了这些函数的行为。什么是新行为?

为什么在python控制台解释这个

x = input()

发送错误,但如果我把它放在file.py中并运行它,它不会?

3 个答案:

答案 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)

简单:

  1. raw_input()返回字符串值
  2. while input()返回整数值
  3. 例如:

    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