raw_input与input都是Python2.x的内建函数,通过读取控制台输入实现与用户的交互.但是,在Python3.x中,删除了raw_input函数.
Python2.x
raw_input:无论用户输入的是什么,raw_input函数都会自动将输入自动转换为str类型.即raw_input可以直接接收用户任何类型的输入.
>>>a = raw_input()
abc
>>>a
'abc'
>>>b = raw_input()
3
>>>b
'3'
input:input函数在接收一个字符串为输入时,必须将字符串用’ ‘或” “括起来,否子就会引发错误.另外,input可以接收纯数字作为输入,类型即为用户输入的数字的类型,int或者float等.
>>>a = input()
liyuan
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module>NameError: name 'liyuan' is not defined
>>>a = input()
'liyuan'
>>>a,type(a)
('liyuan',type 'str')
>>>b = input()
100
>>>b,type(b)
(100,type 'int')
值得注意的是,input函数还可以接收Python任何合法的表达式作为输入.
>>> a = input()
100
>>> b = input()
3
>>> c = input()
a+b
>>> c
103
>>> d =input()
34+1
>>> d
35
查看 Built-in Functions ,得知:
input([prompt])
Equivalent to eval(raw_input(prompt))
input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数,所以,你甚至可以将表达式作为 input() 的参数,并且它会计算表达式的值并返回它。
不过在 Built-in Functions 里有一句话是这样写的:Consider using the raw_input() function for general input from users.
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
Python3.x
Python3.x中取消了raw_input函数,但并不代表删除了他的功能.相反,Python3.x中input函数代替了raw_input实现了它原有的功能,即无论用户的输入为什么,它都会将输入转换为str类型.
在Python3.x与2.x区别的官方文档中写到:
PEP 3111: raw_input() was renamed to input(). That is, the new input() function reads a line from sys.stdin and returns it with the trailing newline stripped. It raises EOFError if the input is terminated prematurely. To get the old behavior of input(), use eval(input()).
若想实现Python2.x中input函数的功能,可以使用eval(input()).