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的常用结构。