[Edu-sig] The fate of raw_input() in Python 3000
Dethe Elza
delza at livingcode.org
Tue Sep 5 03:56:00 CEST 2006
On 4-Sep-06, at 5:45 PM, Andre Roberge wrote:
> The following is something I have been pondering for quite a while now
> and am wondering what other people on this list think.
>
> According to PEP 3100
> (http://www.python.org/dev/peps/pep-3100/ )
> raw_input() [as well as input()] is recommended for removal from the
> built-in namespace, to be replaced by sys.stdin.readline().
But it is trivial to add this back in:
>>> raw_input = sys.stdin.readline
> While I don't think anyone can argue that this removal makes a major
> difference for Python as a programming language, I believe it makes a
> significant difference for using Python as a learning language, adding
> a non-trivial barrier to learning.
Removing this from built-ins isn't going to be any more confusing or
off-putting than trying to understand the difference between input
and raw_input in the first place. I remember being tripped up by
*that* when I was first learning Python.
> Consider the following fake sessions at the interpreter prompt, where
> I use extra parentheses to turn print as a function (as is also
> proposed in Python 3000) - these parentheses can of course be used
> with today's Python.
The standard prompt is great, but not the best learning environment.
I would recommend that students use IPython instead, and since
IPython already adds lots of convenience methods to the global
namespace, there's nothing to stop it from pre-populating globals
with input and raw_input.
That is:
1. It isn't necessary for global functions at the command-line prompt
to be in builtins
2. It possible (and desirable) to have different command-line prompts
for different purposes
3. It isn't necessary to clutter the builtins with every convenience
function, even if we're used to it
Now, all that given, I do hope Python doesn't start going down the
road that Java has taken and replace
>>> open('myfilename.txt')
with
>>> open(BufferedStream(InputStream(FileStream('myfilename.txt')
but I don't think the loss of raw_input is quite on that scale.
--Dethe
Art is either plagiarism or revolution. --Paul Gauguin
More information about the Edu-sig
mailing list