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

如何使输入python 2和python 3兼容的程序?

为此,您尝试将input设置为raw_input,忽略名称错误。

查找"six"库以了解python 2和3的兼容性。

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

"raw_input之间有什么区别?"-"区别在于没有raw_input"…我想说,有很大的区别!

在python 2中,我猜他们假设程序员实际上想"执行"用户输入的命令,因为最初(我猜)向用户请求输入可能只是为了这个。但是当他们意识到程序员可能也想要"原始"输入时,他们设计了另一个称为"原始"输入的函数。在Python3中,他们注意到了这一点,并简单地删除了原始输入默认值的执行,只生成了一个简单的函数。

repl.it,运行py3.5.1将raw_input()作为关键字。

需要指出的是,一般应避免使用eval和exec,因为它们可能是一种安全风险。有关详细信息,请参阅这么老练的内德·巴切尔德的《Eval真的很危险》。当然,这个建议也适用于旧的python 2 input。

@pm2ring我在答案中添加了一个警告。当然,eval()和exec()都有有效的用例,但是在决定使用它之前,您首先需要了解为什么不应该使用eval()。

值得注意的是,这仍然在被调整,文档显示py34和py36在base int处理中看到了变化:[link]docs.python.org/3/library/functions.html input

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

由于获得字符串几乎总是您想要的,所以Python3使用input()实现了这一点。正如斯文所说,如果你想要旧的行为,那么eval(input())是有效的。

您应该补充一下,python 3没有raw_input()。

将输入作为python表达式运行的用途是什么?

@可能是为了输入数字。但它是完全不安全的。

Python 2:

raw_input()精确地接受用户键入的内容,并将其作为字符串传递回来。

input()首先取raw_input(),然后对其执行eval()。

主要的区别在于,input()期望有一个语法正确的python语句,而raw_input()不期望。Python 3:

raw_input()被重命名为input(),所以现在input()返回准确的字符串。

旧的input()被移除。

如果要使用旧的input(),这意味着需要将用户输入评估为python语句,则必须使用eval(input())手动执行。

…在Python 2中。

不适用于python 3

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

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

例子:

1

2

3

4

5

6

7

8name = input("what is your name ?")

what is your name ?harsha

Traceback (most recent call last):

File"", line 1, in

name = input("what is your name ?")

File"", line 1, in

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

4name = raw_input("what is your name ?")

what is your name ?harsha

>>> name

'harsha'

例子:

1

2

3

4

5

6

7

8name = eval(raw_input("what is your name?"))

what is your name?harsha

Traceback (most recent call last):

File"", line 1, in

name = eval(raw_input("what is your name?"))

File"", line 1, in

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

10from 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()完全相同。

那么,这条线索中的每个答案都说了些什么呢??这个问题就像8岁一样。