1.在.7版本中, 这两个功能都可与input配合使用, 但它们之间存在一些细微的差别。具体来说, input功能会对用户输入的类型进行识别和验证。例如, 当输入内容为字符串时, 必须在前后加上引号,如果忘记了添加引号, 则程序运行时会引发错误。
使用示例:(.7.8)
>>> name=raw_input('enter your name:')
enter your name:abc
>>>type(name) //当输入为字符串时,返回值类型是字符串
'str'>
>>> name=raw_input('enter your name:')
enter your name:123
>>>type(name) //当输入为数字时,返回值类型是字符串
'str'>
所以, 也就是说默认的这种操作是, 不管你怎么弄这个输入进来的东西, 它全都会当成是那种字符串来去处理的, 根本就没有其他的一些什么额外限制的。
(.7.8)给出了input这个词语的使用示例。
>>> name=input('enter your name:')
enter your name: abc
Traceback (most recent call last)://当输入为字符串但没加引号时,会引发错误
File"", line 1,in
name=input('enter your name:')
File"", line 1,in
NameError: name'abc'isnotdefined
通过让输入框弹出语让你去填写名字,然后在语的外面加上引号来框住它, 系统才能把咱们手敲进去的那些字给正确地认出来。
输入你的名字, 也就是abc。
>>> type(name)
用户需要调用input函数来接收名为name的数据, 同时需要在屏幕语里面输入enter your name这个信息, 这里要注意, 如果要输入的是一串数字, 那么就不需要使用引号把数字括起来, 系统就可以正常地接收到。
输入你的名字, 此处为123。
>>> type(name)
最后, 尝试给数字加上引号去处理的时候呢, 它就会把那个数字当做是字符串类型来接收。
请在对应的输入界面将您的名字信息填写为‘123’, 并确认录入。
>>> type(name)
从整体情况来看在, .x里使用input这个方法的时候是比较麻烦的, 需要在输入的时候考虑到值的类型这一回事儿, 字符串它是一定要加上双引号的, 数字如果直接作为数字来用的话是不用加双引号的, 要是数字要当作字符串来用的话那就必须加上双引号了, 在这样的情况下这层引号是不会被算作是所输入的内容里面的一部分了的它只是在起到那种去识别类型的作用而已。
要是用了的话, 那就完全不用去顾忌什么了, 系统会按默认的方式, 把所有输入的东西都当作字符串来接收和看做处理对象这种情况之下, 如果在外面再加上一对引号呢, 那这引号本身也会跟着一起被当作是这个字符串内容的一部分给接收到手里的, 具体样子就像下面展示的那样。
>>> name=raw_input('enter your name:')
enter your name:'abc'
>>>name
"'abc'"
>>>type(name)
'str'>
>>>len(name)
5
2.在3版本里面, 这两个东西被整合到一块儿去了, 只剩下了输入框这一个形式, 并且这个输入框压根就不能识别你输入内容是什么类型的数据。
input使用示例:(.3)
>>> name=raw_input('enter your name:') //使用raw_input会直接出错
Traceback (most recent call last):
File"", line 1,in
name=raw_input('enter your name:')
NameError: name'raw_input'isnotdefined
>>> name=input('enter your name:') //input不再需要识别输入类型,统一当作字符串处理
enter your name:abc
>>>type(name)
<class'str'>
同样的, 输入的字符串如果带有引号, 这种状态会被视作内容来接收和处理。
需要说明的是, 在.x版本里面, 大家其实是在保留2.x的这些特性的同时, 把原来的名字给废除了, 然后换成了input这个名字, 导致习惯了用2.x的人,再去用3.x的时候, 就会觉得有一点别扭。
我们去推测一下, 之所以要做这样的大改动, 背后的原则大概就是这样的, 功能这块要往简单了走, 因为2.x的好用的部分确实挺方便, 命名的话也要往简单了走, input这个名字比较短, 用起来顺手点, 把这两个方面整合到一起, 就成了3.x这个新东西里的input了。