What's the difference between `raw_input()` and `input()` in Python 3?
The difference is that raw_input()
does not exist in Python 3.x, while input()
does. Actually, the old raw_input()
has been renamed to input()
, and the old input()
is gone, but can easily be simulated by using eval(input())
. (Remember that eval()
is evil. Try to use safer ways of parsing your input if possible.)
In Python 2, raw_input()
returns a string, and input()
tries to run the input as a Python expression.
Since getting a string was almost always what you wanted, Python 3 does that with input()
. As Sven says, if you ever want the old behaviour, eval(input())
works.
Python 2:
raw_input()
takes exactly what the user typed and passes it back as a string.input()
first takes theraw_input()
and then performs aneval()
on it as well.
The main difference is that input()
expects a syntactically correct python statement where raw_input()
does not.
Python 3:
raw_input()
was renamed toinput()
so nowinput()
returns the exact string.- Old
input()
was removed.
If you want to use the old input()
, meaning you need to evaluate a user input as a python statement, you have to do it manually by using eval(input())
.