raw_input()
和 input()
在 Python 3 中有什么区别?
(注:保留了原来的html标签)
raw_input()
和 input()
在 Python 3 中有什么区别?
不同之处在于,在Python 3.x中不存在raw_input()
,而是存在input()
。实际上,旧的raw_input()
已被重命名为input()
,而旧的input()
已经消失,但可以通过使用eval(input())
来轻松模拟。(请记住,eval()
很危险,请尽可能使用更安全的方式解析输入。)
raw_input
和其他函数的区别是raw_input
不存在。”……我得说,这是一个相当大的区别! - ivan_pozdeeveval
(和exec
)因为它们可能存在安全风险。具体详情请参见SO老手Ned Batchelder的文章Eval really is dangerous。当然这个建议也适用于旧版的Python 2中的input
函数。 - PM 2Ringeval()
和exec()
都有合法的用例,但你首先需要理解为什么不应该使用eval()
,然后再决定是否使用它。 - Sven Marnach在Python 2中,raw_input()
返回一个字符串,而input()
则尝试将输入作为Python表达式运行。
由于几乎总是需要获取一个字符串,因此Python 3使用input()
来实现。正如Sven所说,如果您需要旧的行为,则可以使用eval(input())
。
raw_input()
函数。 - Martin Thomaraw_input()
接受用户输入并以字符串形式返回。
input()
首先接受raw_input()
,然后执行eval()
。
主要区别在于input()
需要一个语法正确的python语句,而raw_input()
不需要。
raw_input()
已更名为input()
,现在input()
返回完全相同的字符串。input()
已被删除。如果您想使用旧版的input()
,也就是需要将用户输入作为python语句进行评估,那么您必须手动使用eval(input())
。
raw_input()
已经被取消,Sven也提到了这一点。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
函数评估用户输入。
raw_input()
评估用户输入的任何数据都是字符串。这意味着Python不会再次尝试理解输入的数据。它只会认为输入的数据是字符串,无论它是否实际上是一个字符串、整数或其他类型。input()
会尝试理解用户输入的数据。所以像helloworld
这样的输入甚至会显示错误消息“helloworld未定义
”。helloworld
”来输入。如果您想确保您的代码在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")