Python中内建函数input()与raw_input()函数的区别
来源:互联网 发布:什么叫知世故而不世故 编辑:程序博客网 时间:2024/06/06 01:25
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 sanTraceback (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)30Traceback (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>>> number110
>>> 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>>> number23.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()函数做了字符串到数值(整型、浮点型等)的转换而已。
阅读全文
0 0
- Python中内建函数input()与raw_input()函数的区别
- python input 与raw_input函数的区别
- python input 与raw_input函数的区别
- Python中input()函数与raw_input()函数的区别
- Python输入函数:raw_input() 与 input() 的区别
- 函数raw_input()与input()的区别
- python input函数和raw_input函数的区别
- python中的input函数和raw_input函数的区别
- python input,raw_input函数
- python中raw_input()以及input()函数的区别
- Python之raw_input() 与 input() 函数
- 小结Python中raw_input() 与 input() 函数
- 输入函数input()和raw_input()的区别
- Python中raw_input() 与 input() 的区别
- python中raw_input() 与 input() 的区别
- Python中raw_input() 与 input()的区别
- raw_input() 与 input() __ Python 的区别
- raw_input() 与 input() 区别 -- Python
- StringUtils的isBlank与isEmply
- 【OI之路】02数论算法-3排列与组合
- 总结JVM
- 分块 bzoj2002
- wireshark用法概述
- Python中内建函数input()与raw_input()函数的区别
- 多表操作相关问题
- Dockerfile使用方法
- HALLO
- String StringBuffer StringBuilder 三者的区别
- C Primer Plus 第四章
- HDU 6127 Hard challenge(几何)
- 【程序实例】VC++ 6.0 C++ 简单的Win32程序怎么阻止用户关闭程序
- Android SystemServer启动流程源码解析