相似函数区别
1. 内建函数input()和raw_input()
input ([prompt]) --> values
raw_input ([prompt]) --> string
1 >>> A = raw_input('Enter somethings:') 2 Enter somethings:abc 3 >>> B = input('Enter somethings:') 4 Enter somethings:abc 5 6 Traceback (most recent call last): 7 File "<pyshell#1>", line 1, in <module> 8 B = input('Enter somethings:') 9 File "<string>", line 1, in <module> 10 NameError: name 'abc' is not defined 11 >>> B = input('Enter somethings:') 12 Enter somethings:'abc' 13 >>>
可以看出,两者均可接受字符串,但raw_input()直接读取控制台的输入(任何类型的输入都可以接收),而input(),它希望能够读取一个合法的python表达式,即你输入的字符串必须用引号括起来,否则它会引发一个SyntaxError。
>>> C = raw_input('Enter somethings:') Enter somethings:123 >>> D = input('Enter somethings:') Enter somethings:123 >>> type(C) <type 'str'> >>> type(D) <type 'int'> >>>
可以看出,raw_input()将所有的输入作为字符串看待,返回字符串类型,而input()在堆在纯数字时有自己的特性,他返回的是输入数字的类型(int,float)。同时,input()接收合法的python表达式,例如input(1+2)返回int型的3.
input()本质上是由raw_input()实现的,只是调用完raw_input()之后再调用eval()函数,所以可以将表达式作为input()的参数,计算值并返回它。
最后,除非对input()有特殊需要,否则一般情况下,推荐使用raw_input()来与用户交互。