Python - input v raw input
Archive - Originally posted on "The Horse's Mouth" - 2007-12-06 05:16:33 - Graham EllisIf you use input, then the data you type is is interpreted as a [b]Python Expression[/b] which means that you end up with gawd knows what type of object in your target variable, and a heck of a wide range of exceptions that can be generated. So you should NOT use input unless you're putting something in for temporary testing, to be used only by someone who knows a bit about Python expressions.
raw_input always returns a string because, heck, that's what you always type in ... but then you can easily convert it to the specific type you want, and catch the specific exceptions that may occur. Hopefully with that explanation, it's a no-brainer to know which you should use.
Example
ccode = 386
first = input("please input something: ")
second = raw_input("please raw_input something: ")
print "First was ... ",first
print "Second was ... ",second
as_an_int_1 = int(first)
as_an_int_2 = int(second)
as_an_int_1 += 7
as_an_int_2 += 9
print "integers with addition ... ",as_an_int_1,as_an_int_2
Here's an example of that running ...
Dorothy:dec07 grahamellis$ python ivr
please input something: ccode
please raw_input something: ccode
First was ... 386
Second was ... ccode
And you start getting in to all sorts of issues if you don't realise quickly that one of your variables contains "386" not "ccode" ....
See also [here] and [here] for full source examples.
Update In Python 3, raw-input has been renamed input ... handing of line ends and rawness have been amended. This article applies to Python 2.