您的位置:首页 > 编程语言 > Python开发

Python中内建函数input()与raw_input()函数的区别

2017-08-16 16:39 633 查看
1 简介

内建函数input()与内建函数raw_input()均是在__builtin__模块中定义的两个函数,两者均可用来从控制台获取用户输入信息以便操作。python 中使用help()函数分别对两者进行解读后发现:

(1)input()函数返回值是数字类型的数据。raw_input()函数返回值是字符串类型的数据,即用户输入的数据类型,均会以字符串的形式返回,当用户输入EOF(Unix:Ctrl-D,Windows:Ctrl-Z+Return)时,将会导致EOF错误。为方便理解,举两个简单的例子。
>>> user_name=raw_input("Please enter your name:")
Please enter your name:zhang san
>>> user_name
'zhang san'
>>>
使用raw_input()获取用户输入时,比较符合常人思维,在输入时不需要对输入信息做任处理。但是使用input()函数执行上述操作时,会出现错误:
>>> user_name=input("Please enter your name:")
Please enter your name:zhang san

Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    user_name=input("Please enter your name:")
  File "<string>", line 1
    zhang san
            ^
SyntaxError: unexpected EOF while parsing
如果想实现raw_input()函数输入字符串的功能,则使用input()时需要做以下修改:
>>> user_name=input("Please enter your name:")
Please enter your name:"zhang san"
>>> user_name
'zhang san'(2)使用input()函数进行表达式输入时可以直接得到表达式的结果,但是会提示EOF Error,而使用raw_input()可以进行表达式输入且不会提示错误。例如:
add=input(10+20)
30

Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
add=input(10+20)
File "<string>", line 0

^
SyntaxError: unexpected EOF while parsing
>>> add=raw_input(10+20)
30
(3)在进行数字值输入时,使用raw_input()函数获取到的值会自动以字符串的形式输出,input()函数获取的值则仍然是原来的数值,不需要做转换处理。例如:
>>> number1=raw_input("please input a number:")
please input a number:10
>>> number1
'10'
>>> number1=input("please input a number:")
please input a number:10
>>> number1
10

>>> number2=raw_input("please input a float number:")
please input a float number:3.14
>>> number2
'3.14'
>>> number2=input("please input a float number:")
please input a float number:3.14
>>> number2
3.14


2.由此可以得出,在需要进行数字值的操作时,使用input()函数较便捷,不需要额外的数据类型转换,使用raw_input()函数进行数值输入操作时,在得到输入数据后需要进行数据类型的转换,才可继续使用,否则会出现数据类型不匹配的错误;再需要获取字符串输入信息时,使用raw_input()函数则更加便捷。
3.input()函数的实际源代码如下:

def input(prompt):
return eval(raw_input(prompt)) 可见input()函数内部调用了raw_input()函数,而raw_input()函数的返回值又作为eval()函数的参数,那么eval()函数有何作用呢?
>>> help(eval)
Help on built-in function eval in module __builtin__:

eval(...)
eval(source[, globals[, locals]]) -> value

Evaluate the source in the context of globals and locals.
The source may be a string representing a Python expression
or a code object as returned by compile().
The globals must be a dictionary and locals can be any mapping,
defaulting to the current globals and locals.
If only globals is given, locals defaults to it.
由此可知,input()函数在数值输入时之所以可以得到数据类型相同的数据,而不是字符串类型的数据,其实际是eval()函数做了字符串到数值(整型、浮点型等)的转换而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息