最近看到不同的python代码中,有使用input函数读取用户输入的,也有使用raw_input函数读取用户输入的,便很好奇两者之间的区别。
我们先看看官方文档中的描述:
raw_input(_[prompt]_)
If the _prompt_ argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read,
EOFError
is raised. Example:
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.
我们可以看到,raw_input()返回一个字符串,而input()会先尝试将其作为一个Python表达式运行,再返回相应的结果。
也就是说,input()等价于eval(raw_input())。
代码如下:
|
|
而由于通常来讲,大多数的输入通常是字符串。因此在Python3中,raw_input()被input()替代,input()本身便返回原始的输入字符串。
同样,若需要将其作为Python表达式运行,用eval(input())即可。