python3.x中的raw_input()和input()有什么区别?

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

不同的是, raw_input()在Python 3.x中不存在,而input()却不存在。 实际上,旧的raw_input()已经被重命名为input() ,而旧的input()已经不存在了,但是可以很容易地用eval(input())来模拟。 (请记住, eval()是邪恶的,所以如果可能,尝试使用更安全的方式来parsinginput。)

在Python 2中raw_input()返回一个string, input()尝试将input作为Pythonexpression式运行。

由于获得一个string几乎总是你想要的,Python 3用input() 。 正如Sven所说,如果你想要老的行为, eval(input())可以工作。

Python 2:

  • raw_input()完全采用用户input的内容,并将其作为string传回。

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

主要区别在于input()需要一个语法正确的Python语句,其中raw_input()不是。

Python 3:

  • raw_input()被重命名为input()所以现在input()返回确切的string。
  • 旧的input()被删除。

如果您想使用旧的input() ,这意味着您需要将用户input评估为python语句,则必须使用eval(input())手动执行此操作。

在Python 3中, raw_input()不存在,这已经被Sven提及。

在Python 2中, input()函数将评估您的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作为一个variables而不是一个string。 为了避免这种情况,我们可以在input中使用双引号,比如“harsha”:

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

的raw_input()

raw_input()函数不计算,它只会读取你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函数来评估用户input。

我想为python 2用户的每个人提供的解释添加更多的细节。 raw_input() ,到目前为止,你知道用户input的数据是string。 这意味着python不会再次理解input的数据。 所有它会考虑的是,input的数据将是string,无论它是否是一个实际的string或int或任何东西。

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

总之,对于Python 2来说 ,为了input一个string,你需要input它像' helloworld ',这是python使用string的常用结构。