Python raw_input and input - WBowam/wbowam.github.com GitHub Wiki

Date: 2014-07-8 Title: Python中raw_input和input的异同点 Tags: Python Category: It

一般软件做的事情主要就是下面几条:
· 接受人的输入。
· 改变输入。
· 打印出改变了的输入
———来自<笨办法学Python>


相同点

这两个函数均用来接收输入,上述真理已足以说明它们的重要性,我不赘述了。

不同点

1. raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

>>>a=raw_input("请输入字符串,不用写引号:")
请输入字符串,不用写引号:guoshu

>>>b=input("请输入字符串,不写引号试试:")
请输入字符串,不写引号试试:guoshu

Traceback (most recent call last):
 File "<pyshell#1>", line 1, in <module>
 input_A = input("Input: ")
 File "<string>", line 1, in <module>
NameError: name 'guoshu' is not defined

>>>c=input("请输入字符串,必须写引号:")
请输入字符串,必须写引号:guoshu

2. raw_input() 将所有输入作为字符串看待,返回字符串类型。而input() 可接受合法的 python 表达式,包括数字,字符串(有引号才算合法的字符串表达式),其他(如1+2)。

>>>d1=raw_input("raw_input输入数字时:"
raw_input输入数字时:123
>>>type(d1)
<type 'str'>

>>>d2=input("input输入数字时:")
input输入数字时:123
>>>type(d2)
<type 'int'>

>>>e1=raw_input("raw_input输入表达式时:"
raw_input输入表达式时:3+2
>>>type(e1)
<type 'str'>
>>>e1
'3+2'

>>>e2=input("input输入表达式时:"
input输入表达式时:3+2
>>>type(e2)
<type 'int'>
>>>e2
5

看看文档时怎么说滴:

input([prompt])
* Equivalent to eval(raw_input(prompt)).

* This function does not catch user errors. If the input is not syntactically valid, a SyntaxError will be          raised. Other exceptions may be raised if there is an error during evaluation.

* If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.

* Consider using the raw_input() function for general input from users.
第一点

input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数

第四点

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

⚠️ **GitHub.com Fallback** ⚠️