python3.x中raw_input()和input()之间的区别是什么?

时间:2011-02-06 18:52:35

标签: python python-3.x

python3.x中raw_input()input()之间有什么区别?

6 个答案:

答案 0 :(得分:388)

不同之处在于Python 3.x中不存在raw_input(),而input()则不存在。实际上,旧的raw_input()已重命名为input(),旧input()已消失,但可以使用eval(input())轻松模拟。 (请记住,eval()是邪恶的。尽可能使用更安全的方式解析您的输入。)

答案 1 :(得分:184)

在Python 2 中,raw_input()返回一个字符串,input()尝试将输入作为Python表达式运行。

由于获取字符串几乎总是您想要的,因此Python 3使用input()执行此操作。正如斯文所说,如果你想要旧的行为,eval(input())就可以了。

答案 2 :(得分:105)

Python 2:

  • raw_input()完全取用用户输入的内容并将其作为字符串传回。

  • input()首先获取raw_input(),然后对其执行eval()

主要区别在于input()期望语法正确的python语句raw_input()没有。

Python 3:

  • raw_input()已重命名为input(),因此现在input()会返回确切的字符串。
  • input()已被删除。

如果你想使用旧的input(),这意味着你需要将用户输入评估为python语句,你必须使用eval(input())手动完成。

答案 3 :(得分:25)

在Python 3中,raw_input()并不存在,而Sven已经提到过。

在Python 2中,input()函数评估您的输入。

示例:

name = input("what is your name ?")
what is your name ?harsha

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    name = input("what is your name ?")
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

在上面的例子中,Python 2.x试图将harsha评估为变量而不是字符串。为了避免这种情况,我们可以在我们的输入中使用双引号,例如&#34; harsha&#34;:

>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha

<强>的raw_input()

raw_input()`函数没有评估,只会读取你输入的内容。

示例:

name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'

示例:

 name = eval(raw_input("what is your name?"))
what is your name?harsha

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    name = eval(raw_input("what is your name?"))
  File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined

在上面的示例中,我只是尝试使用eval函数评估用户输入。

答案 4 :(得分:7)

我想在每个人为 python 2用户提供的解释中添加更多细节。 raw_input(),到目前为止,您知道评估用户输入的数据字符串。这意味着python不会尝试再次理解输入的数据。所有它将考虑的是输入的数据将是字符串,无论它是否是实际的字符串或int或任何东西。

另一方面,input()试图理解用户输入的数据。因此像helloworld这样的输入甚至会将错误显示为“helloworld is undefined”。

总之,对于 python 2 ,要输入一个字符串,你需要像'helloworld'那样输入它,这是python中使用字符串的常用结构。

答案 5 :(得分:0)

如果要确保您的代码在python2和python3上运行,请在脚本中使用function input()并将其添加到脚本的开头:

from sys import version_info
if version_info.major == 3:
    pass
elif version_info.major == 2:
    try:
        input = raw_input
    except NameError:
        pass
else:
    print ("Unknown python version - input function not safe")