python3.x中raw_input()
和input()
之间有什么区别?
答案 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)
raw_input()
完全取用用户输入的内容并将其作为字符串传回。
input()
首先获取raw_input()
,然后对其执行eval()
。
主要区别在于input()
期望语法正确的python语句raw_input()
没有。
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")