[Python-Dev] Challenge about print >> None
Christian Tismer
tismer@appliedbiometrics.com
Tue, 12 Sep 2000 19:35:13 +0300
Fredrik Lundh wrote:
>
> Vladimir wrote:
> > I understand that you want me to think this way. But that's not my
> > intuitive thinking. I would have written your example like this:
> >
> > def func(file=sys.stdout):
> > print >> file, args
> >
> > This is a clearer, compared to None which is not a file.
This is not clearer.
Instead, it is presetting a parameter
with a mutable object - bad practice!
> Sigh. You code doesn't work. Quoting the PEP, from the section
> that discusses why passing None is the same thing as passing no
> file at all:
>
> "Note: defaulting the file argument to sys.stdout at compile time
> is wrong, because it doesn't work right when the caller assigns to
> sys.stdout and then uses tables() without specifying the file."
>
> I was sceptical at first, but the more I see of your counter-arguments,
> the more I support Guido here. As he pointed out, None usually means
> "pretend I didn't pass this argument" in Python. No difference here.
>
> +1 on keeping print as it's implemented (None means default).
> -1 on making None behave like a NullFile.
Seconded!
ciao - chris
--
Christian Tismer :^) <mailto:tismer@appliedbiometrics.com>
Applied Biometrics GmbH : Have a break! Take a ride on Python's
Kaunstr. 26 : *Starship* http://starship.python.net
14163 Berlin : PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF
where do you want to jump today? http://www.stackless.com