[Python-Dev] Challenge about print >> None

M.-A. Lemburg mal@lemburg.com
Fri, 08 Sep 2000 16:30:37 +0200

Vladimir Marangozov wrote:
> Seems like people are very surprised to see "print >> None" defaulting
> to "print >> sys.stderr". I must confess that now that I'm looking at
> it and after reading the PEP, this change lacks some argumentation.

According to the PEP it defaults to sys.stdout with the effect of
working just like the plain old "print" statement.

> In Python, this form surely looks & feels like the Unix cat /dev/null,
> that is, since None doesn't have a 'write' method, the print statement
> is expected to either raise an exception or be specialized for None to mean
> "the print statement has no effect". The deliberate choice of sys.stderr
> is not obvious.
> I understand that Guido wanted to say "print >> None, args == print args"
> and simplify the script logic, but using None in this case seems like a
> bad spelling <wink>.
> I have certainly carefully avoided any debates on the issue as I don't
> see myself using this feature any time soon, but when I see on c.l.py
> reactions of surprise on weakly argumented/documented features and I
> kind of feel the same way, I'd better ask for more arguments here myself.


I'd opt for raising an exception instead of magically using
sys.stdout just to avoid two lines of explicit defaulting to
sys.stdout (see the example in the PEP).

BTW, I noted that the PEP pages on SF are not up-to-date. The
PEP 214 doesn't have the comments which Guido added in support
of the proposal.

Marc-Andre Lemburg
Business:                                      http://www.lemburg.com/
Python Pages:                           http://www.lemburg.com/python/