Python 3中raw_input()和input()的区别是什么?


当前回答

我想在大家为python 2用户提供的解释基础上再补充一点细节。Raw_input(),到目前为止,您已经知道它计算用户作为字符串输入的任何数据。这意味着python甚至不会试图再次理解输入的数据。它所考虑的是输入的数据将是字符串,无论它是否是一个实际的字符串或int或任何东西。

而input()则试图理解用户输入的数据。因此,像helloworld这样的输入甚至会显示错误为“helloworld is undefined”。

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

其他回答

区别在于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())手动执行。

如果你想确保你的代码使用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")

我想在大家为python 2用户提供的解释基础上再补充一点细节。Raw_input(),到目前为止,您已经知道它计算用户作为字符串输入的任何数据。这意味着python甚至不会试图再次理解输入的数据。它所考虑的是输入的数据将是字符串,无论它是否是一个实际的字符串或int或任何东西。

而input()则试图理解用户输入的数据。因此,像helloworld这样的输入甚至会显示错误为“helloworld is undefined”。

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