5

好的,所以我使用了很多输入命令,我明白在 Python2 中我可以做到:

text = raw_input ('Text here')

但是现在我使用 Python 3 我想知道两者之间有什么区别:

text = input('Text here')

和:

text = eval(input('Text here'))

我什么时候必须使用其中一个?

4

2 回答 2

8

在 Python 3.x 中,raw_input成为并删除了inputPython 2.x。input因此,通过在 3.x 中执行此操作:

text = input('Text here')

您基本上是在 2.x 中执行此操作:

text = raw_input('Text here')

在 3.x 中执行此操作:

text = eval(input('Text here'))

与在 2.x 中执行此操作相同:

text = input('Text here')

以下是 Python 文档的快速摘要:

PEP 3111:raw_input()重命名为input(). 也就是说,新input() 函数从中读取一行sys.stdin并将其返回,并去除尾随换行符。EOFError如果输入过早终止,它会引发 。要获得 的旧行为input(),请使用eval(input()).

于 2013-09-26T18:46:37.857 回答
2

这些是等价的:

raw_input('Text here')       # Python 2
input('Text here')           # Python 3

这些是等价的:

input('Text here')           # Python 2
eval(raw_input('Text here')) # Python 2
eval(input('Text here'))     # Python 3

请注意,在 Python 3 中没有一个名为 的函数raw_input(),因为 Python 3input()刚刚被raw_input()重命名。在 Python 3 中没有直接等效于 Python 2input()eval(input('Text here')).

input('Text here')现在,在 Python 3 中,和之间的区别在于eval(input('Text here'))前者返回输入输入的字符串表示(删除了尾随换行符),而后者不安全地评估输入,就好像它是直接在交互式解释器中输入的表达式一样。

于 2013-09-26T18:47:36.953 回答