关于python:python3.x中raw_input()和input()之间的区别是什么?

What's the difference between raw_input() and input() in python3.x?

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


区别在于Python3.x中不存在raw_input(),而input()存在。实际上,旧的raw_input()已经改名为input(),旧的input()已经不存在了,但可以很容易地用eval(input())来模拟。(记住以东十一〔六〕是恶的。尽可能使用更安全的方法分析输入。)


在python 2中,raw_input()返回一个字符串,input()尝试将输入作为python表达式运行。

由于获得字符串几乎总是您想要的,所以Python3使用input()实现了这一点。正如斯文所说,如果你想要旧的行为,那么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())手动执行。


在python 3中,不存在sven已经提到的raw_input()

在python 2中,input()函数评估您的输入。

例子:

1
2
3
4
5
6
7
8
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":

1
2
3
4
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha

RWYIN()

raw_input()`函数不进行计算,它只读取您输入的内容。

例子:

1
2
3
4
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'

例子:

1
2
3
4
5
6
7
8
 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一起运行,请在脚本中使用函数input(),并将其添加到脚本开头:

1
2
3
4
5
6
7
8
9
10
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版本中使用它们。

在Python 2:

raw_input():它精确地接受用户类型并将其作为字符串对象传递回来。

input():它精确地获取所使用的类型,然后转换输入对象的类型。例子。使用输入[10,20,30],然后它将作为列表对象类型返回。

在Python 3中:

input():与python2中的raw_input()完全相同。

eval(input()):与python2中的input()完全相同。