在python3中' raw_input() '和' input() '有什么区别?

在python3中,raw_input()input()之间有什么区别?

352143 次浏览

区别在于raw_input()在Python 3中不存在。x,而input()是。实际上,旧的raw_input()已经被重命名为input(),旧的input()已经没有了,但是可以很容易地通过使用eval(input())来模拟。(记住eval()是邪恶的。如果可能的话,尽量使用更安全的方式解析输入。)

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

因为获取字符串几乎总是你想要的,Python 3用input()来实现。正如Sven所说,如果你想要旧的行为,eval(input())可以工作。

Python 2:

  • raw_input()获取用户键入的内容,并将其作为字符串传递回来。

  • input()首先接受raw_input(),然后对其执行eval()

主要的区别是input()要求语法正确的python语句,而raw_input()则不要求。

Python 3:

  • raw_input()被重命名为input(),所以现在input()返回精确的字符串。
  • 旧的input()已被删除。

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

我想在每个人提供的Python 2用户的解释中添加更多的细节。raw_input(),到现在为止,你知道它计算用户作为字符串输入的任何数据。这意味着python甚至不会试图再次理解输入的数据。它所考虑的是输入的数据将是字符串,无论它是否是一个实际的字符串或int或任何东西。

input()则试图理解用户输入的数据。所以像helloworld这样的输入甚至会将错误显示为'helloworld is undefined'。

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

在python3中,raw_input()不存在,Sven已经提到过。

在python2中,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作为变量而不是字符串来计算。为了避免这种情况,我们可以在输入后使用双引号,如“harsha”:

>>> 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函数计算用户输入。

如果你想确保你的代码使用python2和python3运行,在脚本的开头添加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")