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=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
>>> number1=raw_input("please input a number:")
please input a number:10
>>> number1
'10'
2.由此可以得出,在需要进行数字值的操作时,使用input()函数较便捷,不需要额外的数据类型转换,使用raw_input()函数进行数值输入操作时,在得到输入数据后需要进行数据类型的转换,才可继续使用,否则会出现数据类型不匹配的错误;再需要获取字符串输入信息时,使用raw_input()函数则更加便捷。
3.input()函数的实际源代码如下:
def input(prompt):
return eval(raw_input(prompt)) 可见input()函数内部调用了raw_input()函数,而raw_input()函数的返回值又作为eval()函数的参数,那么eval()函数有何作用呢?
内建函数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()函数做了字符串到数值(整型、浮点型等)的转换而已。
相关文章推荐
- Python中input()函数与raw_input()函数的区别
- python中的input函数和raw_input函数的区别
- Python中input()和raw_input()函数的区别
- Python输入函数:raw_input() 与 input() 的区别
- python input函数和raw_input函数的区别
- python2.x里面的input()和raw_input()函数以及3.x中的input()函数的区别
- python中raw_input()以及input()函数的区别
- python中input和raw_input的区别
- input函数在python2和python3中的区别
- python之raw_input()函数
- input()函数在python3和python2中的区别
- Python中raw_input()与input()的区别
- Python中的eval(),raw_input()和input()函数
- 【Python】Python input和raw_input的区别
- python input和raw_input的区别
- Python学习笔记 -- input()和raw_input()使用区别
- Python--raw_input()函数
- Python中的input方法与raw_input方法区别小记
- Python的输入和raw_input()内建函数等以及相关运算符
- python 学习(一) 中文,字符串,以及input和raw_input区别