好的,所以我使用了很多输入命令,我明白在 Python2 中我可以做到:
text = raw_input ('Text here')
但是现在我使用 Python 3 我想知道两者之间有什么区别:
text = input('Text here')
和:
text = eval(input('Text here'))
我什么时候必须使用其中一个?
好的,所以我使用了很多输入命令,我明白在 Python2 中我可以做到:
text = raw_input ('Text here')
但是现在我使用 Python 3 我想知道两者之间有什么区别:
text = input('Text here')
和:
text = eval(input('Text here'))
我什么时候必须使用其中一个?
在 Python 3.x 中,raw_input
成为并删除了input
Python 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())
.
这些是等价的:
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'))
前者返回输入输入的字符串表示(删除了尾随换行符),而后者不安全地评估输入,就好像它是直接在交互式解释器中输入的表达式一样。