关键词: Python raw_input() input()
0. 前言
之前在学习“笨办法学Python”时使用过raw_input()
函数来提取用户输入的内容,今天在学习Python基础教程又遇到了input()
函数,input()
函数也可以用来提取用户输入的内容,那么两者有什么差别?本文将对raw_input()
和input()
函数的差别进行总结。
1. 正文
1.1 Python2.x版本
我所用的是Ubuntu16.04
系统,系统自带Python2.7版本,在命令行中敲入python
命令,进入Python交互命令界面。由于raw_input()
和input()
是内置函数,可通过help
函数来查看其具体用法。
先来看一看raw_input()
的含义:
1 | help(raw_input) |
raw_input()
的含义是读取用户输入的字符串,并且用户输入的字符串中如果有换行符(trailing newline),那么换行符将会被去除。如果用户在输入过程中输入EOF(文件结束符),将会引发EOFError
。
再来看一看input()
的含义:
1 | help(input) |
可以看到,input()
函数实际上是通过调用raw_input()
来实现的,eval()
函数的功能是将字符串str当成有效的Python表达式来求值并返回计算结果。
这样子还是不能够理解两个函数的差别,下面通过具体例子来理解两者差异:
1 | ">") raw_input_A = raw_input( |
可以看出,raw_input()
和input()
都可以接收字符串,但raw_input()
可以接受控制台任何类型的输入,而input()
则要求输入必须是合法的Python表达式,否则就会引起错误。
1 | ">") raw_input_B = raw_input( |
可以看出,raw_input()
将所有输入都当做字符串来看待,返回的是str类型。而input()
在对待纯数字输入时,会把数字当作Python表达式来看待,它的返回类型就不再是str类型,将会变成int或float类型。同时,input()
函数可以接收合法的Python表达式,如input(1+1)
结果返回int类型的2。
1.2 Python3.x版本
在Python3.x版本中,旧的input()
函数功能被删除,新的input()
函数的含义完全相当于Python2.x中的raw_input()
。也就是说,在Python3.x版本中,不再有raw_input()
函数,input()
函数变为Python2.x中的raw_input()
函数。
参考链接: