Answers:
区别在于raw_input()Python 3.x中不存在,而input()确实存在。实际上,raw_input()已将旧名称重命名为input(),而旧名称input()已消失,但是可以使用轻松地对其进行模拟eval(input())。(请记住这eval()是邪恶的。如果可能,请尝试使用更安全的方法来解析输入。)
raw_input……有什么区别?” -“不同之处在于没有raw_input。” ...我要说是很大的不同!
eval()和exec(),但你首先需要明白,为什么你不应该使用eval()在决定使用它之前。
在Python 2中,raw_input()返回一个字符串,并input()尝试将输入作为Python表达式运行。
由于获取字符串几乎总是您想要的,因此Python 3做到了input()。正如Sven所说,如果您想要旧的行为,那就eval(input())可以了。
raw_input()。
在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尝试将rahda评估为变量而非字符串。为了避免这种情况,我们可以在输入中使用双引号,例如“ 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函数评估用户输入。
我想在每个人为python 2用户提供的解释中添加更多细节。raw_input(),到现在为止,您已经知道该功能可以评估用户以字符串形式输入的数据。这意味着python甚至不会尝试再次理解输入的数据。它只会考虑输入的数据将是字符串,无论它是实际的字符串还是int或其他任何值。
而input()在另一方面试图理解用户输入的数据。因此,像这样的输入helloworld甚至会将错误显示为' helloworld is undefined'。
总之,对于python 2来说,也要输入字符串,您需要像' helloworld' 一样输入它,这是python中使用字符串的常用结构。
如果您想确保自己的代码与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")