python不同版本中的raw_input与input

1.python2.7版本中,raw_input与input均可使用,但二者略有不同,input会识别输入类型,如:字符串需要加引号,否则会引发错误。

  raw_input使用示例:(python2.7.8)

>>> name=raw_input('enter your name:')
enter your name:abc
>>> type(name)              //当输入为字符串时,返回值类型是字符串
<type 'str'>
>>> name=raw_input('enter your name:')
enter your name:123
>>> type(name)              //当输入为数字时,返回值类型是字符串
<type 'str'>

   由此可知,raw_input默认将输入均当做字符串进行处理,不作限制。

  input使用示例:(python2.7.8)

>>> name=input('enter your name: ')
enter your name: abc

Traceback (most recent call last):    //当输入为字符串但没加引号时,会引发错误
  File "<pyshell#0>", line 1, in <module>
    name=input('enter your name: ')
  File "<string>", line 1, in <module>
NameError: name 'abc' is not defined

  >>> name=input('enter your name: ')   //加了引号后才能正确识别输入
  enter your name: 'abc'
  >>> type(name)
  <type 'str'>

 >>> name=input('enter your name:')    //输入数字时,无需加引号即可正确接收
 enter your name:123
 >>> type(name)
 <type 'int'>

 >>> name=input('enter your name:')    //最后尝试给数字加引号,则会当做字符串处理接收
 enter your name:'123'
 >>> type(name)
 <type 'str'>

  综合来看,在python2.x中使用input时比较麻烦,需要在输入时考虑值的类型:字符串一定要加引号,数字当数字用不加引号,数字当字符串用要加引号(这种情况下,引号不会被当作输入的内容一部分,只作为类型识别符);

  若使用raw_input则完全无需顾忌,默认把输入都当作字符串处理接收。这种情况下,如果还加引号,引号也会一并当作字符串的内容接收,如下:

>>> name=raw_input('enter your name:')
enter your name:'abc'
>>> name
"'abc'"
>>> type(name)
<type 'str'>
>>> len(name)
5

 

2.python3.3版本中,这两者被整合,只有input,没有raw_input,且input不会识别输入类型。

  input使用示例:(python3.3)

>>> name=raw_input('enter your name:')   //使用raw_input会直接出错
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    name=raw_input('enter your name:')
NameError: name 'raw_input' is not defined
>>> name=input('enter your name:')     //input不再需要识别输入类型,统一当作字符串处理
enter your name:abc
>>> type(name)
<class 'str'>

  同样,输入字符串如果带引号,也会被当作内容处理接收。

    说明:在python3.x版本中,实际上是保留了2.x的raw_input特性,但是又冠上了input的名字,废除了raw_input本来的名字。所以用惯了2.x的再用3.x会有这点别扭。推测这么改动的原则时:功能就简(2.x的raw_input好用),命名也就简(input名字短点好用),整合两者,就成了3.x的新的input。

posted on 2014-08-13 14:54  superfox  阅读(175)  评论(0)    收藏  举报

导航