Python 2.x和3.x中输入命令之间的差异

时间:2013-09-26 18:44:07

标签: python text input python-3.x

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

text = raw_input ('Text here')

但是现在我使用Python 3,我想知道它们之间的区别是什么:

text = input('Text here')

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

我何时必须使用其中一个?

2 个答案:

答案 0 :(得分:8)

在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())

答案 1 :(得分: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 3 input()只是raw_input()重命名。在Python 3中,没有直接相当于Python 2的input(),但它可以很容易地模拟如下:eval(input('Text here'))

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