好的,所以我使用了很多输入命令,我明白在Python2中我可以做到:
text = raw_input ('Text here')
但是现在我使用Python 3,我想知道它们之间的区别是什么:
text = input('Text here')
和
text = eval(input('Text here'))
我何时必须使用其中一个?
答案 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输入,就好像它是直接在交互式解释器中输入的表达式。