python中的raw_input() 与 input()区别

参考文章:http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html
作用:
两者都python的内建函数,读取控制台用户的输入数据,但略有区别

>>> raw_input_A = raw_input("raw_input: ")
raw_input: abc
>>> type(raw_input_A)
<type 'str'>
>>> input_A = input("Input: ")
Input: abc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
>>>
>>> input_A = input("Input: ")
Input: "abc"
>>> 
>>> raw_input_A = raw_input("raw_input: ")
raw_input: "abc"
>>> print raw_input_A
"abc"
>>> print input_A
abc
>>> type(input_A)
<type 'str'>
>>> type(raw_input_A)
<type 'str'>
>>> 

尝试输入数字,看下有什么区别

>>> raw_input_B = raw_input("raw_input: ")
raw_input: 123
>>> type(raw_input_B)
<type 'str'>
>>> input_B = input("input: ")
input: 123
>>> type(input_B)
<type 'int'>

总结:
1.在输入字符的情况下,raw_input()会将输入当作字符串看,返回的也是字符串类型的值,但input()会把输入当作是一个python表达式,如果想作为字符串返回,输入时要把输入内容用引号括起来,很是不方便,不然就会引发一个SyntaxError
2.在输入数字的情况下,raw_input()的返回还是str类型,面input()返回则是一个int类型,不光可以是int型,还可以是浮点型等
3.再就是,input()可以接受python表达式,输入表达式,直接计算出结果,而raw_input()则是直接把表达式当字符串输出

>>> input_C = input("input: ")
input: 1+3
>>> input_C
4
>>> type(input_C)
<type 'int'>
>>> raw_input_C = raw_input("raw_input:")
raw_input:1+3
>>> raw_input_C
'1+3'
>>> type(raw_input_C)
<type 'str'>

4.平时一般我们用raw_input()来接收用户的输入,如果有特别需要的话,再就input(),如果你想接收int型数据,那可以直接用input(),如果你用raw_input()接收int型,下面还用要一行代码去做转换,这样就复杂了

以上测试环境:python 2.6.6,但python3下情况是不一样的。python3里已经没有了raw_input(),只有input()了,也就不存在以上的区别可言了,不管你输入的是字符还是数字,返回的都是str类型,这样反而方便了

>>> a = input("input:")
input:abc
>>> type(a)
<class 'str'>
>>> b = input("input:")
input:123
>>> type(b)
<class 'str'>
>>> c = raw_input("raw_input:")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'raw_input' is not defined
>>> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章