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。
浙公网安备 33010602011771号